Multi Series Line Chart with Labels
The plot displays labels for all stock prices of the hovered time. The example is forked/modified from @jakevdp’s block.
View this example in the online editor
Vega-Lite JSON Specification
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"data": {
"url": "data/stocks.csv"
},
"width": 400,
"height": 300,
"layer": [
{
"encoding": {
"x": {"field": "date", "type": "temporal"},
"y": {"field": "price", "type": "quantitative"},
"color": {"field": "symbol", "type": "nominal"}
},
"layer": [
{"mark": "line"},
{
"selection": {
"label": {
"type": "single",
"nearest": true,
"on": "mouseover",
"encodings": ["x"],
"empty": "none"
}
},
"mark": "point",
"encoding": {
"opacity": {
"condition": {"selection": "label", "value": 1},
"value": 0
}
}
}
]
},
{
"transform": [{"filter": {"selection": "label"}}],
"layer": [
{
"mark": {"type": "rule", "color": "gray"},
"encoding": {
"x": {"type": "temporal", "field": "date", "aggregate": "min"}
}
},
{
"encoding": {
"text": {"type": "quantitative", "field": "price"},
"x": {"type": "temporal", "field": "date"},
"y": {"type": "quantitative", "field": "price"}
},
"layer": [
{
"mark": {
"type": "text",
"stroke": "white",
"strokeWidth": 2,
"align": "left",
"dx": 5,
"dy": -5
}
},
{
"mark": {"type": "text", "align": "left", "dx": 5, "dy": -5},
"encoding": {
"color": {"type": "nominal", "field": "symbol"}
}
}
]
}
]
}
]
}