OptionalidUnique identifier for the chart. Used as the MAIDR id.
OptionaltitleChart title displayed in text descriptions.
OptionalsubtitleChart subtitle.
OptionalcaptionChart caption.
OptionalaxesAxis configuration. Each axis may be provided as either a plain string
(shorthand for { label: value }) or a full AxisConfig object
(for per-axis format, or grid navigation on scatter).
For heatmaps and segmented bar charts, use fill for the color/category
axis; the binder maps it to the canonical z axis in the MAIDR schema.
Optionalx?: D3AxisInputOptionaly?: D3AxisInputOptionalfill?: D3AxisInputFill/color axis for heatmaps and segmented bars. Maps to z internally.
OptionalformatOptional formatting configuration applied to axes that do not specify
their own format. Per-axis format on AxisConfig takes precedence.
OptionalautoWhen true (the default), the binder writes the generated MAIDR schema
to the SVG as a maidr-data attribute so vanilla-JS users don't need
to call svg.setAttribute(...) themselves. The returned result is
unchanged either way.
Set to false if you are driving MAIDR yourself — e.g. passing the
returned schema to <Maidr data={...}> or persisting it elsewhere.
The React adapter (useD3Adapter, MaidrD3) forces this
to false internally so it can stay in control of the schema.
CSS selector for the line path elements (e.g., 'path.line', '.line').
Each matched element represents one line/series.
OptionalpointCSS selector for the data point elements per line (e.g., 'circle').
If not provided, data is extracted from the line path __data__ binding.
OptionalxAccessor for the x-axis value of each point.
OptionalyAccessor for the y-axis value of each point.
OptionalfillAccessor for the series/fill label.
OptionalstepWhich way the risers of a step curve go, when the line is drawn as one.
'hv' holds the level and jumps at the next sample, which is
d3.curveStepAfter; 'vh' jumps at the current one, d3.curveStepBefore;
'mid' jumps halfway between the two, d3.curveStep. Declaring it is what
turns a bindD3Line bind into a step reading — navigated by transition
rather than by sample, and described in terms of its runs — and what tells
an area's trace that the extra vertices in the rendered path are risers
rather than samples.
Left undefined by default rather than guessed, because this binder reads
its data off __data__ and never looks at the path: which curve you drew
is your own knowledge, not something the drawing gives back. All three of
d3's step curves have a name here, so leaving it out is a caller saying
nothing rather than a convention MAIDR cannot express.
OptionalcensoredAccessor for whether a sample is a censored time.
'censored',
falling back to censor or isCensored. true, 1, '1' and 'true'
count as censored; anything else does not.
Deliberately NOT aliased to event, which most survival datasets carry
with the opposite meaning — a 1 there is the event happening, which is
exactly the times that are not censored.
OptionalcensoredCSS selector for the censoring tick marks, when the chart draws them from
a separate data join (e.g. 'line.censor'). Each tick is merged into the
arm its fill names — or the only arm, on a single-curve chart — at the
time its x gives.
OptionalyAccessor for the confidence band's lower bound.
OptionalyAccessor for the confidence band's upper bound.
Configuration for binding a D3 Kaplan-Meier survival curve.
A survival curve is a step line —
d3.line().curve(d3.curveStepAfter)over one<path>per arm — soselector,pointSelectorand thex/y/fillaccessors are D3LineConfig's, unchanged. What a survival figure carries beyond a step chart is the two things it is read for: which times were censored, and how wide the confidence band is.Censoring marks are drawn as ticks from their own data join, not as vertices of the curve, so they are usually a separate selection: point
censoredSelectorat them and the binder merges each tick into its arm by time — flagging the vertex already at that time, or inserting one carrying the probability the curve holds there. When the curve's own samples already say (acensoredcolumn), leavecensoredSelectorunset and let thecensoredaccessor read it.