MAIDR Documentation - v4.4.0
    Preparing search index...

    Interface ForestDeclaration

    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.

    It is an ErrorBarDeclaration laid out on a categorical row axis, so it accepts every field one does. What it adds is the part a sighted reader takes from the drawing and is otherwise never told: how much each study weighs, which row is the pooled result rather than evidence, and where the null line sits.

    interface ForestDeclaration {
        title?: string;
        name?: string;
        yMin?: string;
        yMax?: string;
        error?: string;
        intervalSeries?: string;
        orientation?: Orientation;
        type: FOREST;
        weight?: string;
        pooled?: string;
        pooledIndex?: number;
        pooledSeries?: string;
        nullValue?: number;
    }

    Hierarchy

    Index

    Properties

    title?: string

    Overrides the layer's announced title. Maps to MaidrLayer.title.

    Names the chart; use DeclarationBase.name to say which layer of it this is.

    name?: string

    Names this layer among sibling layers. Maps to MaidrLayer.name.

    Announced on a layer switch in place of the trace type, so a hue-split figure says "Male" and "Female" rather than "error_bar plot" twice.

    yMin?: string

    Field holding the absolute lower bound. Maps to ErrorBarPoint.yMin.

    'yMin', falling back to lower, lo, ciLower, ciLow, ci_low, low or min

    yMax?: string

    Field holding the absolute upper bound. Maps to ErrorBarPoint.yMax.

    'yMax', falling back to upper, hi, ciUpper, ciHigh, ci_high, high or max

    error?: string

    Field holding the interval as an offset from the estimate — the field a Recharts <ErrorBar dataKey> or a matplotlib yerr points at. A number is a symmetric offset; a [lower, upper] pair is an asymmetric one.

    Both forms are positive magnitudes, as yerr is: the bounds are estimate - lower and estimate + upper, so an interval given as [0.2, 0.3] around 1.4 is 1.2 to 1.7. Signed offsets are not a second accepted spelling — read that way the same pair would give 1.6 to 1.7, and neither reading is detectable downstream once the absolute bounds are emitted. A negative entry is left out rather than flipped.

    Normalised to absolute bounds on the way into the payload. Loses to yMin/yMax where both are declared, since those need no arithmetic.

    Alone among the field refs here, this one has no fallback chain: an offset column is named explicitly or spelled exactly error. Every common spelling is either axis-specific (yerr, xerr, and a row carrying both says nothing about which axis this chart draws its intervals on) or a dispersion statistic a chart commonly draws a multiple of (sd, sem, err — ±1.96 SEM is as ordinary as ±1). Read as the drawn offset, one of those resizes every interval on the figure without saying so.

    intervalSeries?: string

    Companion series drawing the interval rather than the estimate — an amCharts openValueY/openValueX column, a Highcharts errorbar.

    Merged into this layer by x and suppressed from becoming a layer of its own.

    orientation?: Orientation

    Which axis the estimate runs along. Maps to MaidrLayer.orientation.

    The Orientation values, which are 'horz' and 'vert' — not the words they abbreviate. 'horizontal' is not accepted, and a declaration carrying it is warned about and read without the key.

    type: FOREST

    TraceType.FOREST — the string 'forest'.

    weight?: string

    Field holding the study's weight in the pooled estimate, as a fraction of one. Maps to ForestPoint.weight.

    A forest plot encodes this as marker area: two studies whose intervals look alike can contribute wholly differently to the result. Omitted from the payload when nothing resolves — a forest plot without weights is a real chart.

    A fraction of one, not a percentage. Meta-analysis software reports this column as a percentage — 12.5 for one study in eight — and that is the number the default chain will find. A resolved weight above 1 is left out rather than rescaled: dividing by 100 guesses that the column sums to 100, and announcing it untouched says "weight 1250%".

    'weight', falling back to w or share

    pooled?: string

    Field marking a row as the pooled summary rather than a study. Maps to ForestPoint.pooled.

    It is a different kind of row — it is not evidence, it is what the evidence came to — and announcing it as one more study invites a reader to count it among them.

    Read on the same strict table as SurvivalDeclaration.censored: true, 1, '1' and 'true' mark the pooled row and nothing else does. Read by truthiness instead, a CSV's '0' marks every study as the summary and empties the evidence the trace counts and compares.

    'pooled', falling back to isPooled or summary

    pooledIndex?: number

    Row index of the pooled summary, for data that carries no flag column. A meta-analysis draws the pooled row last, so this is usually the last index.

    Counts the declaring series' own rows, as authored, from zero — including any row an adapter goes on to drop for want of a finite value, since that is the only sequence an author can see. It is resolved before any ForestDeclaration.pooledSeries is absorbed, so it never addresses a row that arrived from the companion.

    pooledSeries?: string

    Companion series drawing the pooled summary's own mark — the diamond a meta-analysis ends with, when it is drawn differently from the studies.

    Its rows are appended after the studies and the companion is suppressed from becoming a layer of its own.

    nullValue?: number

    The value that means "no effect" — 1 for a ratio measure, 0 for a difference. Maps to MaidrLayer.forestOptions.nullValue.

    Whether a study's interval crosses it is the result for that study, so the trace announces the crossing. There is deliberately no default: a ratio chart guessed at 0 would report every study as not crossing, since odds ratios are all positive, and that is a confident wrong answer given to every row. Undeclared, the layer gets the estimate, the interval and the weight, and makes no claim about significance.