Étiqueter automatiquement le point maximum
joinaggregate ramène le max global, un filtre isole la ligne correspondante et une couche point + texte la met en évidence — l'annotation suit les données.
Cas d'usage
Pointer le pic historique d'une métrique sans le rechercher à la main.
Prérequis
Vega-Lite v5
Vega-Lite
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"values": [
{ "date": "2026-05-28", "valeur": 2120 },
{ "date": "2026-05-29", "valeur": 2240 },
{ "date": "2026-05-30", "valeur": 1980 },
{ "date": "2026-05-31", "valeur": 1850 },
{ "date": "2026-06-01", "valeur": 2410 },
{ "date": "2026-06-02", "valeur": 2580 },
{ "date": "2026-06-03", "valeur": 2390 },
{ "date": "2026-06-04", "valeur": 3120 },
{ "date": "2026-06-05", "valeur": 2760 },
{ "date": "2026-06-06", "valeur": 2280 },
{ "date": "2026-06-07", "valeur": 2150 },
{ "date": "2026-06-08", "valeur": 2640 }
]
},
"layer": [
{
"mark": "line",
"encoding": {
"x": { "field": "date", "type": "temporal", "title": null },
"y": { "field": "valeur", "type": "quantitative" }
}
},
{
"transform": [
{ "joinaggregate": [{ "op": "max", "field": "valeur", "as": "vmax" }] },
{ "filter": "datum.valeur >= datum.vmax" }
],
"layer": [
{ "mark": { "type": "point", "size": 110, "color": "#ff00ff", "filled": true },
"encoding": {
"x": { "field": "date", "type": "temporal" },
"y": { "field": "valeur", "type": "quantitative" }
} },
{ "mark": { "type": "text", "dy": -12, "color": "#ff00ff", "fontWeight": "bold" },
"encoding": {
"x": { "field": "date", "type": "temporal" },
"y": { "field": "valeur", "type": "quantitative" },
"text": { "field": "valeur", "format": ",.0f" }
} }
]
}
]
}Vega-LitejoinaggregateMaxAnnotations