Plot specification
Data, encodings, labels, panels, and annotations stay explicit and inspectable.
TOOL / EXPERIMENTAL PUBLIC ALPHA
Scientific figures in Python and the browser. Line figures keep color + marker identity, with optional direct labels.
Six examples from the published registry packages. Deterministic synthetic data, not scientific findings. Open PNGs or SVGs at native size.

Three named series, 25 observations each. Open circles, squares and triangles carry identity; every line is solid.
Open SVG
The same values rendered independently in Ultraviolet Laboratory. Settled Canvas, with an SVG export alongside it.
Open SVG
Ten paired observations per group; no fitted model. Color identifies A and B; the marker treatment is the published scatter default.
Open SVG
Shared bins cover all 15 observations per dataset. Vertical rules mark full-data medians: A 0.7, B 1.3.
Open SVG
Nine observations per group, deterministic jitter and group medians. The authored [0,2] domain leaves space for a4 count labels inside the plot.
Open SVG
Four conditions by six samples. Sequential fill encodes response (a.u.) from 0.05 to 1.0, with a colorbar.
Open SVGRun these examples · Exact data · Package, source and image hashes
Python uses Lavender Fog Notebook; Canvas uses Ultraviolet Laboratory. These renders exclude unreleased layout, safe-save and browser band changes. Page reductions do not establish readability or accessibility qualification. Shared semantics do not imply identical pixels or renderer coverage.

Retained alpha.3 published-package specimen. Current package identities are shown above; these pixels remain bound to the release that produced them. Select the light Python or dark Canvas specimen for native-size inspection. The converging observations remain close.
PALETTE PINNED INDEPENDENTLYDETERMINISTIC SYNTHETIC EXAMPLE / PIXELS UNALTEREDThese retained alpha.3 images show the baseline direct-label treatment and were not regenerated for later releases. Each image below pairs with the ordinary-legend specimen above at unchanged native dimensions: Python 1008 × 624; Canvas 760 × 520, DPR 1. Labels separate the names, not coincident or close observations. These are product examples, not new reference-theme qualification.

Retained alpha.3 specimen · optional direct labels · unchanged data and output size · click for native size.

Retained alpha.3 specimen · optional direct labels · unchanged data and output size · click for native size.
Specimen versions, data and image hashes · Run the public example
01 / THE CONTRACT
Plot specification, theme, profile, and portable schema travel together. Python and browser surfaces interpret that contract through separate implementations.
Data, encodings, labels, panels, and annotations stay explicit and inspectable.
Semantic color and surface tokens form each named visual system.
Typography, markers, grids, and emphasis can change without rewriting the evidence.
Schema 0.4 and renderer API 1 make runtime expectations visible rather than implicit.
02 / THE REFERENCE PROFILE
S1 carries an open circle, S2 an open square, and S3 an open upright triangle. Default lines are solid and equal in semantic weight. Color + shape carry identity; line rhythm remains available for independent scientific semantics. Matching line + marker legends teach the same identity drawn in the body; optional direct labels reuse it beside the traces.
Reference light theme for the documented three-series line profile. The retained alpha.3 Python specimen above shows its ordinary legend and optional direct-label treatment at 1008 × 624.
Open retained alpha.3 Python specimen ↗Reference dark theme for the same bounded profile. The retained alpha.3 terminal-Canvas specimen shows its ordinary legend and optional direct-label treatment at 760 × 520, DPR 1.
Open retained alpha.3 Canvas specimen ↗Reference means an evidence-backed exemplar under documented rendering conditions, not universal qualification or a change in default theme selection. Close and overlapping observations may remain difficult to distinguish.
Read the bounded reference profile03 / THE RUNTIMES
The shared vocabulary does not promise identical coverage. Python includes the categorical-matrix extension; the browser root currently covers line, scatter, and strip summary, with temporal renderers in a separate extension.
figurestead==0.9.0a4from figurestead import line
figure, axes = line([0, 1, 2], [[0, 1, 0]])
figure.savefig("figurestead-first-success.png", dpi=150)Open the exact complete example @figurestead/web@0.9.0-alpha.5import { createFigurestead } from "@figurestead/web";
const figure = createFigurestead(canvas, contract, {
autoplay: false,
reducedMotion: true,
});
figure.resize();This excerpt assumes canvas and a complete normalized contract are already defined.
04 / THE EVIDENCE
Version-bound examples, explicit rendering facts, and bounded contracts make the alpha inspectable. The showcase is a deterministic synthetic fixture, not a scientific finding or a new qualification result.
Producing a2/alpha.3 package versions and hashes, the deterministic 29-observation trajectories, Python/Canvas runtime facts, and all four exact PNG hashes. Each ordinary/direct pair preserves its inputs and output dimensions.
Inspect the specimen manifest ↗Recorded normal-color and grayscale inspection at declared sizes supports the documented three-series profile. The retained showcase does not extend that designation to arbitrary densities, overrides or viewing sizes.
Read reference scope and limits ↗An explicit single-layer rendered-context audit uses the supplied substrate, opacity and compositing facts. It is distinct from static palette inspection and is not a whole-figure visibility guarantee.
Inspect the rendered-context audit ↗Python direct_labels=True and browser style.directLabels: true opt into the one-panel, 2–3-series treatment with single-line printable ASCII labels. It reuses actual marker identity. Unsupported text, geometry or insufficient fit returns the complete ordinary legend; active browser transitions use ordinary treatment until settled.