Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Figurestead

Figurestead is an experimental scientific figure system with Python and framework-free browser surfaces. It shares figure-contract and theme semantics across runtimes while keeping scientific output deterministic and inspectable.

Coordinated release target: Python figurestead==0.9.0a2 and browser @figurestead/web@0.9.0-alpha.3. The package counters are independent. Registry commands below require those exact versions to be available; review candidates use the retained files in release preparation.

Start here

Python

python -m pip install "figurestead==0.9.0a2"
from figurestead import line

figure, axes = line([0, 1, 2], [[0, 1, 0]])
figure.savefig("figurestead-first-success.png", dpi=150)

Open the exact Python example.

Browser

npm install @figurestead/web@0.9.0-alpha.3

The package exports createFigurestead; rendering requires a complete normalized figure contract. The repository includes one with every identifier defined. From a checkout:

python3 -m http.server 4173

Open http://127.0.0.1:4173/examples/browser-first-success/. Inspect the exact browser example and its inline contract.

Python and browser surfaces share normalized figure-contract vocabulary and selected theme definitions. Each surface renders through its own implementation; shared semantics do not imply pixel-identical output.

Series identity and optional direct labels

Default line series combine color with persistent open circle (S1), square (S2), and upright triangle (S3) markers and matching line-and-marker legends. Line rhythm remains an independent semantic channel. Python callers can carry series_slots=[1, 2] when rebuilding filtered S2/S3 rows; browser setData retains established keyed identity through supported filtering/reordering and partial style overrides. setConfig replaces the contract.

Lavender Fog Notebook is the reference light theme; Ultraviolet Laboratory is the reference dark theme for the bounded three-series line profile, not universal accessibility, CVD or print qualification. Product defaults are unchanged.

Opt in with Python line(..., direct_labels=True) or browser style: { directLabels: true }. Direct labels reuse the actual body marker identity beside the traces. V1 covers ordinary one-panel, 2–3-series line figures with single-line printable ASCII labels. Unsupported or insufficient layouts fall back atomically to the ordinary legend. This treatment does not support Unicode, multiline or math interpretation; printable ASCII math punctuation is literal. Active browser transitions use ordinary treatment until settled, and exports without trustworthy measurement retain the ordinary legend.

See the ordinary/direct-label example and detailed direct-label contract. The explicit rendered-series contrast audit measures caller-specified rendering facts separately from the static palette audit.

Figurestead at a glance

Eight deterministic synthetic Figurestead specimens spanning line, scatter, distribution, and temporal figure families

The montage spans temporal response, periodic series, calibration and nonlinear relationships, distributions, grouped distributions, exact temporal coverage, and sparse observations. These are deterministic synthetic design and renderer-evaluation fixtures—not scientific measurements or findings.

Beyond the montage

Populated categorical response matrix with habitat columns, response-band rows, sequential fills, percentages, and exact counts

The populated categorical response matrix preserves ten habitat columns and six response-band rows. Fill encodes bounded within-habitat share while each cell retains its percentage and exact count. The fixture is deterministic and synthetic; its project-defined bands are not ecological or regulatory thresholds. Inspect the source scene, raw observations, and derived matrices.

Python and browser

Figurestead's two surfaces share a normalized contract vocabulary, selected theme definitions, and evidence-oriented conventions. They do not promise identical pixels or identical renderer coverage.

  • Python provides the compact plotting API used by the first-success example and the existing categorical-matrix extension shown above.
  • The framework-free browser package provides its accepted core renderer registry plus the temporal extension at @figurestead/web/extensions/temporal.
  • The populated categorical matrix is currently Python-rendered; this README does not imply a browser categorical-matrix renderer exists.

Evidence and documentation

Status and limits

Figurestead is an experimental public alpha, not a mature universal plotting library.

  • The three-series and five-series color-led recommendations are project-authored usage guidance. Higher-series evidence relies on redundant marker and dash channels where those channels exist.
  • Digital paper evidence records a 6.372 pt minimum label against Figurestead's internal 6 pt project floor; it is not physical-printer certification or an external typographic standard.
  • Color-vision-deficiency plates are simulations with documented model limits, not medical or universal-accessibility certification.
  • Renderer coverage differs between Python and browser runtimes, and all specimens shown here are deterministic synthetic evaluation fixtures.

Figurestead is MIT licensed. See versioning, third-party notices, and trademarks.

Metadata

Release files for figurestead 0.9.0a2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for figurestead 0.9.0a2
File Size Uploaded
figurestead-0.9.0a2.tar.gz 424.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for figurestead 0.9.0a2
File Interpreter ABI Platform
figurestead-0.9.0a2-py3-none-any.whl Python 3 none any Details

Total release size: 506.2 kB

Release files / figurestead-0.9.0a2.tar.gz

Download URL figurestead-0.9.0a2.tar.gz
Size 424.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ab91df78fbd0ce6457317087fe92a5c5fc65da0b4882b22dcade16bf2af499a9
BLAKE2b-256 checksum
How to use checksums
517411ed278e26bac6ad60a6ff5abd6631c07e13139bad763fa8bef46713447c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / figurestead-0.9.0a2-py3-none-any.whl

Download URL figurestead-0.9.0a2-py3-none-any.whl
Size 81.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4050ca02f4c0293929818084b7820623219c1413c8e16980eb0060a6c622d2a6
BLAKE2b-256 checksum
How to use checksums
a767bf99d26a0588e043e69c4475be3c8fcf396bb3a9d3dfa892853da702ec64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page