Multi Series Line Chart with an Interactive Line Highlight
The plot below uses argmax to position text labels at the end of line. It also applies single selection to highlight a hovered line. Note that we can hidden thick lines to make it easier to hover.
View this example in the online editor
Vega-Lite JSON Specification
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"description": "Multi-series line chart with labels and interactive highlight on hover. We also set the selection's initial value to provide a better screenshot",
"data": {"url": "data/stocks.csv"},
"transform": [{"filter": "datum.symbol!=='IBM'"}],
"encoding": {
"x": {"field": "date", "type": "temporal", "title": "date"},
"y": {"field": "price", "type": "quantitative", "title": "price"},
"color": {
"condition": {
"param": "hover",
"field":"symbol",
"type":"nominal",
"legend": null
},
"value": "grey"
},
"opacity": {
"condition": {
"param": "hover",
"value": 1
},
"value": 0.2
}
},
"layer": [{
"description": "transparent layer to make it easier to trigger selection",
"params": [{
"name": "hover",
"value": [{"symbol": "AAPL"}],
"select": {
"type": "point",
"fields": ["symbol"],
"on": "pointerover"
}
}],
"mark": {"type": "line", "strokeWidth": 8, "stroke": "transparent"}
}, {
"mark": "line"
}, {
"encoding": {
"x": {"aggregate": "max", "field": "date"},
"y": {"aggregate": {"argmax": "date"}, "field": "price"}
},
"layer": [{
"mark": {"type": "circle"}
}, {
"mark": {"type": "text", "align": "left", "dx": 4},
"encoding": {"text": {"field":"symbol", "type": "nominal"}}
}]
}],
"config": {"view": {"stroke": null}}
}