layerLine_api = { const line = vl.markLine()
.encode(
vl.x().fieldQ("scaled_date"),
vl.y().fieldQ("Fatalities")
);
const left_text = vl.markText({"baseline":"top", "aria":false})
.encode(
vl.x().fieldQ("scaled_date").aggregate("min"),
vl.y().fieldQ("Fatalities").aggregate({"argmin": "scaled_date"}),
vl.text().fieldN("year").aggregate({"argmin": "scaled_date"})
);
const right_text = vl.markText({"aria":false})
.encode(
vl.x().fieldQ("scaled_date").aggregate("max"),
vl.y().fieldQ("Fatalities").aggregate({"argmax": "scaled_date"}),
vl.text().fieldN("year").aggregate({"argmax": "scaled_date"})
);
return vl.layer(line, left_text, right_text)
.width(800).height(500)
.data("https://raw.githubusercontent.com/odu-cs625-datavis/public-fall23-aveerasa/main/Airplane_Crashes_and_Fatalities_Since_1908.csv")
.transform(
vl.calculate("year(datum.Date)").as("year"),
vl.calculate("floor(datum.year / 10)").as("decade"),
vl.calculate("(datum.year % 10) + (month(datum.Date)/12)").as("scaled_date"),
vl.calculate("datum.first_date === datum.scaled_date ? 'first' : datum.last_date === datum.scaled_date ? 'last' : null").as("end")
)
.encode(
vl.x().title("Year into Decade").axis({"tickCount": 11}),
vl.y().title("CO2 concentration in ppm").scale({"zero": false}),
vl.color().fieldO("decade").legend(null).scale({"scheme": "magma"})
)
.config({text: {"align": "left", "dx": 3, "dy": 1}})
.render()
};