A filled band between a series and a baseline. Navigates exactly as
TraceType.LINE does — the fill is what the mark looks like, not
an extra magnitude — so several AREA series are read independently of
one another. Use TraceType.STACKED_AREA when the bands sit on
top of each other instead.
Categories that stay put while a quantity is re-divided between them at each step -- an alluvial diagram. The same weighted flow a TraceType.SANKEY carries, drawn without a left-to-right budget.
Rank over time, one line per competitor -- a bump chart. Navigated as a multi-line layer, with the one difference that decides whether it reads correctly: the y axis is a rank, so rank 1 is the best position and the smallest number, and the pitch is inverted to match. Each point announces the places gained or lost alongside the rank, since the overtake is what the chart is drawn for.
A slope graph of values is a TraceType.LINE layer with two samples, not this.
A letter-value plot: the box plot's five-number summary generalised to a variable-depth ladder of quantiles, so a large sample's tails stay legible. Navigated as a box plot is -- one distribution per row, its summary values walked along the other axis -- with the ladder read outward from the median in value order, and each rung announced as the percentile it actually is.
Virtual layer comparing candlestick OHLC fields against a reference line (e.g. a moving average). Never declared in MAIDR JSON — created at runtime by the candlestick delta feature (Alt+L to toggle, Ctrl+Shift+L to pick the reference line).
Flow between members of one set, drawn around a circle. Cyclic by construction, so it has no stages -- and every ribbon still follows.
Geographic regions shaded by a value. Read as a bar chart whose categories happen to be places, it loses everything spatial: where the high values sit, which way the gradient runs, and which borders the value jumps across.
A scalar field drawn as curves of constant value. Read as a TraceType.LINE layer the level is just a series name, so the two questions the chart is drawn for -- what value this curve is, and how steeply the field changes here -- both go unanswered.
Two series drawn back to back across a shared category axis, one growing left and one growing right -- a population pyramid, or a Likert scale split around a neutral midpoint. Navigated as a TraceType.STACKED layer is, with the one difference that decides whether it reads correctly: the values arrive signed, and the sign is a direction rather than a magnitude, so the pitch takes the size and the announcement names the side.
A category and a value drawn as a point rather than a bar -- a Cleveland dot plot. Read exactly as a TraceType.BAR is; the two differ in the mark, not in what a reader navigates, which is why this carries no model of its own. It exists so the chart announces itself as the chart the author drew.
Two values per category joined by a segment -- before and after, two groups, two years. The gap is the message, so the trace announces the change alongside each end rather than leaving the reader to subtract two numbers they heard one at a time.
An estimate with the interval drawn around it — an error bar, a
confidence interval, a point range. Navigated as a grid of
[lower, value, upper] against the samples, so the reader can move
between the three magnitudes at one x as readily as between samples.
One effect estimate with its interval per study, against a shared null line, with a pooled summary at the foot -- the standard figure of a meta-analysis. Read as an TraceType.ERROR_BAR layer it loses the three things it is drawn for: whether an interval crosses the null, how much each study weighs, and which row is the pooled result rather than evidence.
Intervals along a shared axis, one lane per row -- a gantt chart, a timeline, a swimlane diagram. Each point carries a start and an end rather than a magnitude, so what the reader is told is a span and its length, and where it sits is carried in the panning: a lane's intervals sweep left to right with the axis, so later is audibly later.
A population shrinking across ordered stages. Navigated as a TraceType.BAR layer is, with the one difference that decides whether the chart is readable: the number a reader wants is the retention between adjacent stages, not the count, so that is what the pitch carries. The counts are announced alongside it.
A single measure read against a range -- a gauge, or a bullet chart with its target and qualitative bands. One navigable point whose meaning is entirely relational: 73 says nothing without the 100 it is out of, the 80 it was aiming at, and the band it lands in.
Hexagonal binning: the standard answer to an overplotted scatter. Read as a lattice of cells each carrying a count, which is a TraceType.HEATMAP -- with the one difference that decides its navigation: a hex lattice staggers alternate rows, so a column index does not identify a position. A vertical move keeps the bin whose centre is nearest in x, and the announcement gives the centre rather than the indices.
The same hierarchy as a TraceType.TREEMAP, drawn as depth-ordered bands rather than nested rectangles. The layout differs; the tree does not, so it is read by the same trace.
A dot plot with a stem to the baseline. Read exactly as TraceType.DOT and TraceType.BAR are -- the stem is what the mark looks like, not a second magnitude.
Genomic position against significance -- the standard figure of a GWAS. Read as a TraceType.SCATTER it offers point-by-point navigation over tens of thousands of points, which is not a viable path to the few dozen that matter.
A stacked bar chart whose bar widths also encode data -- a two-way contingency table drawn as tiles. Read as a TraceType.STACKED layer it loses the width entirely, which is half the table: the conditional proportions arrive without the group sizes they were computed from.
A node-link diagram: nodes joined by undirected links, laid out by a force solver or similar. The same graph a TraceType.SANKEY carries with the constraints relaxed -- no stages, no direction -- and with degree in place of magnitude as the thing a reader is after.
TraceType.STACKED_AREA whose bands are shares of a common total.
One polyline per observation across several axes, one axis per variable. Navigated as a multi-line layer -- an observation per row, an axis per column -- with the one difference that decides the chart: every column is a different quantity, so a value is pitched against its OWN axis rather than against one range for the layer.
Categories arranged around a circle rather than along an axis, drawn as wedges whose radius is the value -- a polar area, coxcomb or rose chart. Read exactly as TraceType.RADAR is; the two differ in the mark, not in what a reader navigates.
Categories arranged around a circle rather than along an axis, joined into a closed outline -- a radar or spider chart. Navigated as a multi-line layer, with each spoke a column and each series a row; what the circle adds is that a spoke's stereo position follows its angle rather than its index, so a sweep goes out and comes back.
One density curve per group along a shared value axis, the curves offset down the page so their shapes can be compared. The offset is presentation -- it exists so the curves do not overlap illegibly -- so a layer carries each group's curve on its own terms and never the baseline it was drawn from. Reading it as a TraceType.VIOLIN_KDE pitches every group against a reference curve, which answers a different question than the one a ridgeline is drawn to ask.
Weighted flow between nodes, drawn as ribbons whose width is the magnitude. The chart exists to show routing and proportion at once, which is a question about topology -- and there is no partial reading of it available on a grid, because the chart is a graph.
A scatter for data with ties, where several observations landing on one coordinate are drawn as a single mark with that many petals.
Read by ScatterTrace, over plain ScatterPoints whose z
is how many observations are on the mark -- z being announced with its
axis label and driving the intensity, so the multiplicity is both spoken
and audible rather than a field the reader has to go looking for.
Named apart from TraceType.SCATTER for a reason stronger than the one TraceType.TREE gives. It is not only that "scatter plot" names a chart nobody drew: a sunflower plot's marks are not its observations. Sixty observations come back as twenty-one marks, because coincident ones were collapsed -- which is the single fact the chart was chosen to convey. A reader told "scatter" has been told the marks are the data, and here they are not.
Area bands stacked on one another, so a band's height is its own series' value while the band's top edge is the running total. Reading such a layer as a TraceType.LINE announces one number where the chart draws two, with nothing to say which one was heard — which is why this is a type of its own rather than a line with a fill.
A hierarchy drawn as nested rectangles whose area is a magnitude. It is the first trace type that is not a flat grid: a node's address is its depth and its position within that depth, and the arrow keys move between parent, child and sibling rather than along rows and columns.
The same hierarchy as a TraceType.TREEMAP, drawn as boxes joined by links rather than as nested areas. The tree does not differ and the painting does, so it is read by the same trace and named apart only so that the reader is told what is on the page: an organization chart announced as a treemap is a chart type nobody drew.
The magnitude is commonly absent here -- a reporting line has no size -- which is the case TreemapPoint.y being optional exists for.
The same hierarchy as a TraceType.TREEMAP, drawn as circles nested inside circles rather than as nested rectangles. Sized by value like a treemap and navigated identically, and named apart for the reason TraceType.TREE is: the reader is told which chart is on the page, and a circle-packing diagram announced as a treemap is a chart type nobody drew.
The same hierarchy as a TraceType.TREEMAP, drawn as rings around a centre rather than as nested rectangles. The layout differs and the tree does not, so it is read by the same trace -- with one thing of its own: the rings are angular, so the sound is panned around the dial the way a pie's is, and sweeping a ring goes out and comes back.
A Kaplan-Meier survival curve: the probability of surviving past each time, dropping in steps as events occur. Read as a TraceType.STEP layer it loses the two facts the figure is drawn for -- the median survival, which is the number most readers came for, and which times are censored rather than events.
Effect size against significance -- the standard figure of a differential expression analysis. Read as a TraceType.SCATTER it announces the two coordinates and withholds the point's identity, which is the payload.
A sequence of signed contributions carrying a starting value to an ending one — the staple of financial and product reporting. Each step draws a floating bar from its running total before to its running total after, so the point carries both the contribution and the total it produced.
Terms sized by weight. The layout carries no information -- it is chosen to pack glyphs, not to encode anything -- so the trace reads it as what it measures: a term and a magnitude, walked in weight order.
Enumeration of supported plot trace types. Use these values for the
typefield in MaidrLayer.Example