Annotations explain selected evidence. They should name a threshold, event, endpoint, difference, or unusual observation that matters to the reader.
Treat an annotation as data whenever possible. A prepared row with semantic coordinates survives resizing, scale changes, server rendering, and updates more reliably than a hand-positioned SVG fragment.
| Reader question | Start with |
|---|---|
| How did each category change between two periods? | Slopegraph with direct endpoint labels |
| In which direction did a point move in two dimensions? | Change arrow |
| Where is a target, zero, or policy boundary? | Rule plus concise text |
| Which time span needs explanation? | Explicit interval rectangle or area |
| Which few observations are notable? | Selected dots and text |
| Does the reader need arbitrary HTML or controls? | Application-owned overlay |
Marks and Layering is the source of truth for render order and stable layer identity.
A slopegraph gives both periods a shared quantitative scale, connects each category's endpoints, and labels the values directly.
Use stable category keys for the links and endpoints. Direct labels remove a legend lookup, but they need collision policy when values converge. Filter to meaningful categories, increase vertical space, or use an accessible detail view rather than allowing unreadable overlap.
A slope implies before-to-after order. Label both periods and keep the same quantitative scale.
A change arrow connects one quantitative state to another. Position carries the start and end values; the arrowhead carries direction.
Keep both endpoints in the prepared row. Do not infer direction from color or row order inside the renderer. Label the compared states and retain original values for focus and tooltips.
Arrow and link endpoint channels are defined in Rules, Links, Arrows, Vectors, and Ticks.
Use a rule for a single semantic value:
Use a ranged area or rectangle when the annotation is an interval:
Name the threshold or band in surrounding text or a sparse text layer. A decorative grid line should not compete with a policy boundary that carries meaning.
Prepare a small annotation dataset:
This makes the selection auditable. The chart renderer should not decide which business events are interesting.
Data and Channels covers mixed mark sources and typed accessors.
An application overlay is appropriate for:
Anchor it from scene.chart or a focused ChartPoint, then keep its state and lifecycle in the application. Do not mutate chart SVG to create a second, unreconciled state model.
See Tooltips and Focus for rich tooltip ownership and Interactive Charts for complete application-controlled examples.
Text channel and positioning options are in Text, Frame, and Facet.