A chart is a list of marks. Each one comes from a factory function — line,
bar, area, arc, sankey, dot, autoPositionedLabel — that takes the
rows it draws and the names of the fields to read them by. They are plain objects rather
than components, which is why both frameworks take the same array, and why a
chart can be assembled conditionally, memoized, or built in a getter.
A mark can also annotate the chart rather than being a reading of its own:
decorative wraps one so it still draws and still contributes to the scales, but
owns no chart points — which keeps it out of the tooltip. See
Dot.
Marks that share a pair of axes also share their scales, so two marks in one
chart can't disagree about where a value sits. arc and sankey are the
exceptions: each brings its own geometry and takes the whole plot, so a chart
drawing one has no axes or grid around it and nothing to layer against.
Marks paint in order, and every mark reads the same pair of scales — so a bar and a line in one chart can't disagree about where a value sits. Here a line traces the total across the bars beneath it: