Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
uzor-figures — data-visualization engine core for uzor (V1 + V2 + V3 + V4).
Stateless layout + draw layer: scales (domain -> normalized [0, 1] ->
screen px, plus [scale::ColorScale]: domain value -> CSS hex color),
a single plot-area coordinate transform ([PlotArea]), pure mark draw
functions, axis/grid/crosshair/tooltip/legend/colorbar guides, a small
theme, eight composed figures (bar / curve / histogram / timeline /
sankey / pie / waterfall / heatmap), and (V2) an interaction plane —
semantic input/output actions, hit-testing, hover/selection state, a 1D
brush, and a cross-figure selection bus.
See nemo/docs/uzor-engines/uzor_figures_engine_architecture.md §3 (crate
layout) and §4 (design laws). V1 harvested scales/coord/marks/axes from
mylittlechart's chart-engine machinery per
nemo/docs/uzor-engines/mlc_harvest_inventory.md §2; V2 harvests the input
pipeline (§4) and promotes uzor-graph's FocusSet — see
[mod@interact]'s module docs for exactly what was generalized/dropped.
V4 (scale::color, figure::{pie, waterfall, heatmap},
guide::colorbar) is the business-chart set — reuses
uzor::ui::animation::math::color::Color's existing OKLCH lerp
machinery verbatim (no color math reimplemented) and bakes in the FT/
Economist chart-hygiene defaults from
nemo/docs/uzor-engines/research_dataviz_sota_2026.md §6.
NOT in this crate yet (later milestones — do not add here without a plan doc):
- A figure registry/IR (mlc's
ChartTypeDef+DrawOpstwo-table pattern) — figures here are hand-composed, not registry-dispatched. - Animation / keyed data-join (enter/update/exit).
ScaleMode(Manual/Auto/Focus runtime auto-range policy) and axis position/visibility/formatter configurability — engine-strengthening arc Wave 3, not built yet. [interact::viewport::Viewport::windowed] (via [scale::Scale::windowed]) is the seam that work is expected to reuse — see [Viewport]'s own module docs.
Zoom/pan/fit (engine-strengthening arc Wave 5, 2026-07-26) landed as
[Viewport] — a stateful, DOMAIN-based (not bar-index) visible-window
model over [scale::Scale::windowed], opt-in via
[figure::CurveFigure::render_with_viewport]. See [interact::viewport]'s
own module docs for the full design.
Every mark/guide/figure function is a pure, stateless draw over
borrowed data (design law #3) — this crate holds no owned render
state anywhere; the V2 interaction structs ([FocusSet],
[BrushState], [SelectionBus]) are small, explicit, caller-owned
state a figure only ever BORROWS through
[figure::FigureOverlay], never retains.
uzor-graph's own FocusSet (formerly uzor-graph/src/interaction/ focus.rs) is now RE-POINTED onto this crate's [FocusSet] (Phase D,
2026-07-17) — uzor-graph deleted its fork; [FocusSet::select_many]
is the one behavior that migration needed and generalized into this
crate (see focus.rs's own module docs).