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.

Published versions: Python figurestead==0.9.0a2 and browser @figurestead/web@0.9.0-alpha.3 (alpha.3 release). The source and retained next candidate target Python 0.9.0a3 / browser 0.9.0-alpha.4; they are not yet published. The counters are independent. Reviewers install the exact retained files described in release preparation. Registry commands below install the published foundation, not the new candidate features.

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. Default theme selections 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.

Next candidate: a3 / alpha.4

Candidate release notes distinguish these additions from the B2 identities, series_slots, baseline direct labels and bounded reference themes already shipped in a2/alpha.3:

  • Python series_keys + keyed line_styles author rhythm independently of marker/color slots. Non-solid direct-label treatments in both runtimes add truthful line samples, subject to whole-legend fallback.
  • Opt-in Python marker_stride / browser style.markerStride reduce marker density by authored index, preserving every line observation and segment. Default cadence is unchanged.
  • Ordinary static Python lines accept NaN y as explicit breaks, preserving finite-run endpoints and isolated observations; they never reconnect or impute. Shared x stays finite, and gapped direct labels fall back.
  • Python gains measured subtitle containment, sequential heatmap colors and dataset-owned histogram medians. Browser rhythm continuity, newcomer registration and scene integrity are corrected.

See line semantics and limits. These are candidate/source features, not claims about the registry commands above. No new reference-theme or accessibility qualification is implied.

Figurestead at a glance

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

This retained montage records earlier rendering, including prior dash-backed overflow. It is historical imagery, not a demonstration of current implicit rhythm. 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 bounded persistent-identity reference profile covers the first three ordinary line series. Additional series use deterministic color/marker fallback but are not claimed to be independently distinguishable. Unconfigured lines remain solid at every series count; non-solid rhythm is authored semantics. This is current-source behavior, not a retroactive change to published alpha.3.
  • 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.0a3

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.0a3
File Size Uploaded
figurestead-0.9.0a3.tar.gz 443.6 kB Details

Built distribution (wheel)

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

Total release size: 535.5 kB

Release files / figurestead-0.9.0a3.tar.gz

Download URL figurestead-0.9.0a3.tar.gz
Size 443.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3132af9628343932de590f2a2cb3725fcb188564d882453dbb73fbbd9362c535
BLAKE2b-256 checksum
How to use checksums
50f398cf9b6c3701d5b8c34915bbc90b08d4e46eeff59db930083a647f481aa5
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 29, 2026.

Transparency log

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

Download URL figurestead-0.9.0a3-py3-none-any.whl
Size 91.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c2689c2b9d7db878c4c3876cdf9f03b537f17e065f2b5ce429c47dd0c51f1a81
BLAKE2b-256 checksum
How to use checksums
ff2ba3cf8cd6b9794e6d93f2e3f69d55f62173b5d26e8ab954f5fd5802176530
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 29, 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