Vega

End-of-line labels (replacing the legend)

A reversed window rank on the date isolates the last point of each series to hang its name on — the legend disappears and the chart reads directly.

Prerequisites

Vega-Lite v5

Vega-Lite
{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
  "data": {
    "values": [
      { "date": "2026-06-01", "serie": "API", "valeur": 420 },
      { "date": "2026-06-02", "serie": "API", "valeur": 445 },
      { "date": "2026-06-03", "serie": "API", "valeur": 438 },
      { "date": "2026-06-04", "serie": "API", "valeur": 470 },
      { "date": "2026-06-05", "serie": "API", "valeur": 492 },
      { "date": "2026-06-06", "serie": "API", "valeur": 481 },
      { "date": "2026-06-07", "serie": "API", "valeur": 505 },
      { "date": "2026-06-08", "serie": "API", "valeur": 528 },
      { "date": "2026-06-01", "serie": "Web", "valeur": 310 },
      { "date": "2026-06-02", "serie": "Web", "valeur": 298 },
      { "date": "2026-06-03", "serie": "Web", "valeur": 325 },
      { "date": "2026-06-04", "serie": "Web", "valeur": 340 },
      { "date": "2026-06-05", "serie": "Web", "valeur": 332 },
      { "date": "2026-06-06", "serie": "Web", "valeur": 355 },
      { "date": "2026-06-07", "serie": "Web", "valeur": 348 },
      { "date": "2026-06-08", "serie": "Web", "valeur": 367 },
      { "date": "2026-06-01", "serie": "Mobile", "valeur": 180 },
      { "date": "2026-06-02", "serie": "Mobile", "valeur": 195 },
      { "date": "2026-06-03", "serie": "Mobile", "valeur": 210 },
      { "date": "2026-06-04", "serie": "Mobile", "valeur": 205 },
      { "date": "2026-06-05", "serie": "Mobile", "valeur": 228 },
      { "date": "2026-06-06", "serie": "Mobile", "valeur": 241 },
      { "date": "2026-06-07", "serie": "Mobile", "valeur": 236 },
      { "date": "2026-06-08", "serie": "Mobile", "valeur": 255 }
    ]
  },
  "encoding": {
    "x": { "field": "date", "type": "temporal", "title": null },
    "y": { "field": "valeur", "type": "quantitative" },
    "color": { "field": "serie", "type": "nominal", "legend": null }
  },
  "layer": [
    { "mark": "line" },
    {
      "transform": [
        {
          "window": [{ "op": "rank", "as": "r" }],
          "sort": [{ "field": "date", "order": "descending" }],
          "groupby": ["serie"]
        },
        { "filter": "datum.r == 1" }
      ],
      "mark": { "type": "text", "align": "left", "dx": 6, "fontWeight": "bold" },
      "encoding": { "text": { "field": "serie" } }
    }
  ]
}
Vega-LiteLabelsDirect labelingwindow

Related snippets

Back to the Data Lab