Skip to content

Graphs ​

All charts ​

Comparison ​

Parts of a whole ​

Distribution and relationships ​

Activity and time grids ​

KPIs and progress ​

Flows and funnels ​

Includes 30 patterns adapted from the Amicro reference, plus eight dashboard patterns (histogram, Gantt, day/hour heatmap, cohort retention, box plot, dual-axis combo, dumbbell and sunburst). Each card has synthetic data, hover/focus readouts, keyboard buttons and reduced-motion support. Dataset A/B updates time-series charts; allocation, target and flow examples use their own labeled fixtures. Existing chart examples remain below.

Live charts · synthetic data

Hover or focus a mark to read its value. Use the readout buttons for a keyboard and touch readout. Motion follows your reduced-motion setting. These are Vue/SVG demos, not the reference's React package.

Activity heatmap · Emerald

Calendar-style grid of daily activity. Darker cells mean more events; use it for habits and streaks.

Cell 1: 12 events

Activity heatmap · Sky

The same activity grid in a cool tone, for a second metric on the same page.

Cell 1: 9 events

Activity heatmap · Violet

The activity grid in a violet tone, for secondary or comparison data.

Cell 1: 15 events

Spline line · single / dual

Smooth trend over time. Switch to dual to compare two series on one scale.

0255075100JanFebMarAprMayJun
Jan: 35 units · secondary 20

Pill bars · column / row

Rounded bars that grow from zero. Flip between columns and rows for long labels.

0255075100JanFebMarAprMayJun
Jan: 35 units · secondary 20

Gradient spline area

Trend with a soft gradient fill under the line, good for volume over time.

0255075100JanFebMarAprMayJun
Jan: 35 units · secondary 20

Rounded donut

Share of a whole with a total in the middle. Keep it to five slices or fewer.

40%Core
Core: 40%

Pill bars + spline

Bars for totals with a line for the trend, sharing one axis.

0255075100JanFebMarAprMayJun
Jan: 35 units · secondary 20

Scatter matrix

Dots on two axes to spot clusters and outliers between two measures.

secondary units (x) · primary units (y)
Node 1: x 20, y 35

Financial candlesticks

Open, high, low and close for each period, as used in price charts.

0255075100JanFebMarAprMayJunprice offset +100
Jan: open 135, high 150, low 120, close 144

KPI with sparkline

One headline number with its change and a small trend line behind it.

$48,920+14.2% · monthly revenue
Jan: 35 units · secondary 20

Tier pyramid

Stacked tiers from base to top, for plans, levels or rankings.

Tier 4Tier 3Tier 2Tier 1
Tier 4: 24 units

Grouped radial arcs

Grouped arcs on a circle so you can compare a few goals at a glance.

Ring 1: 35%

Speedometer

Dial with a needle that sweeps to the current value against a range.

84%performance index
84% of a 100% scale

Bullet targets

A value against its target, with bands for poor, fair and good.

Throughput · 82 / 75%Latency · 65 / 80%Uptime · 95 / 90%
Throughput: 82%, target 75%

Sankey flow

Flow between stages. Band width shows how much moves from one step to the next.

A · 60B · 40X · 50Y · 50
Source A: 60 units

Step progression

Value that holds and then jumps, such as plan tiers or inventory levels.

0255075100JanFebMarAprMayJun
Jan: 35 units · secondary 20

Stacked tones

Bars split into parts so you can see the total and what it is made of.

0255075100JanFebMarAprMayJun
Jan: base 20, top 15, total 35

Radar web

Several scores on one web, to compare the shape of two profiles.

JanFebMarAprMayJun
Jan: 35 units · secondary 20

Concentric progress rings

Concentric progress rings, one per goal, that fill to their percent.

Ring 1: 35%

Stage funnel

Stages that narrow as people drop off, with the share kept at each step.

100%75%50%24%
Stage 1: 100%

Dot-matrix heatmap

Grid of dots whose fill shows intensity, a lighter alternative to a heatmap.

Cell 1: 0 events

Telemetry sparklines

Rows of tiny live-style sparklines for many signals at once.

CPU Temp · 42°CGPU Temp · 58°CFan Speed · 1200 RPM
CPU Temp: 42°C

Bubble clusters

Bubbles sized by a third value, to compare three measures in one view.

secondary units (x) · primary units (y)
Node 1: x 20, y 35, size 10

Tile treemap

Nested tiles sized by value, for parts of a budget or catalog.

Storage45%Compute30%Network15%Cache10%
Storage: 45%

Stream wave

Flowing layered wave that shows how categories change over time.

0255075100JanFebMarAprMayJun
Jan: lower 23, middle 41, upper 48

Arc meter

Half-circle meter that fills to a single value.

84%load index
84% of a 100% scale

Waterfall steps

Start, inflow, outflow and net, so you can see how a total was reached.

StartInflowOutflowNet
Opening 60

Polar radial pillars

Pillars radiating from a center, one per category.

Ring 1: 35%

Min/max range band

Band between a minimum and a maximum, with both edges drawn.

0255075100JanFebMarAprMayJun
Jan: min 20, max 50

Histogram · attendance distribution

Counts per bucket to show how values are distributed.

01020300–910–1920–2930–3940–4950–59Classes

Classes grouped into equal 10-attendee bins. Bar height = class count.

0–9 attendees: 3 classes

Gantt · studio timeline

Tasks as bars on a timeline, with start, length and overlap.

6h10h14h18h22hCoach ACoach BCoach CCoach D

Coach shifts on a 06:00–22:00 timeline. Bar length = duration.

Coach A: 6:00–10:00

Day × hour · studio occupancy

Day by hour grid showing when things are busiest.

6h9h12h15h18h21hMonTueWedThuFriSatSunLight 0% → dark 100%

Rows = day, columns = hour. Darker cells = higher occupancy (0–100%).

Mon 6:00: 23% occupied

Cohort · member retention

Retention by signup group, read left to right as time passes.

M0M1M2M3JanFebMarApr100%85%70%55%100%81%66%100%77%100%M0 = signup month · future = blank

Signup month × months since signup. Blank future months are not zero.

Jan, month 0: 100% retained

Box plot · revenue spread

Median, quartiles and spread for each group.

$0$50$100RidePowerEnduranceSprint

Whiskers = min/max; box = Q1–Q3; line = median. Revenue in dollars.

Ride revenue: min $20, Q1 $40, median $55, Q3 $70, max $90

Dual-axis · revenue / occupancy

Two measures with their own axes, one as bars and one as a line.

$00%$250025%$500050%$750075%$10000100%RevenueOccupiedJanFebMarAprMayJun

Bars use the left dollar axis; dashed line uses the right occupancy axis (%).

Jan: revenue $3500, occupancy 62%

Dumbbell · plan / actual

Plan against actual for each item, joined by a line to show the gap.

02550RidePowerEnduranceSprint

Outlined dot = planned; filled dot = actual attendees.

Ride: plan 25, actual 21 attendees

Sunburst · expense hierarchy

Rings for each level of a hierarchy, such as expense categories.

100%

Inner ring = category; outer ring = subcategory. Angle = share of total.

Operations: 60% of total expenses

Integration notes ​

Import ChartGallery.vue for a demo or extract a single card into your application. Replace the synthetic arrays, label units, handle missing data, and use the Ready/Loading/Empty selector to preview chart states, and add error handling before live use. Sankey band width encodes flow; treemap tile area encodes share; waterfall bars encode signed deltas; candlesticks expose open/high/low/close in the readout. Charts should supplement, not replace, accessible data tables. The three colored activity grids are variants of one chart family.

Data visualization examples and a dependency graph for Lustro. All numbers below are synthetic samples, not live metrics. Switch between the sample series to see how the charts respond. Motion patterns explain when movement helps.

Series filter + bars + trend ​

Bars per month with a segmented filter ("All" sums the series). The trend is a least-squares line over complete months only, so the current month is left out, and it needs 3 or more months with data. A missing month shows a dash and no bar. Fictitious data. Motion replays when the filter changes and stops with reduced motion.

$0$96$192Mar158Apr152May164Jun190Jul192Aug188Sep136

Rises about $8 per month (complete months only). Sep is the current month and is left out.

Mar$158
Apr$152
May$164
Jun$190
Jul$192
Aug$188
Sep (current)$136

Data charts ​

LUSTRO / CHART LIBRARY

One dataset, many ways to read it. Labels and the data table remain available without color or animation.

Accessible data behind the examples ​

All sixteen examples above respond to the same North/South/West controls. Numbers are made up for this guide; they have no unit or business meaning. The table supplies exact values for readers who cannot or do not want to use the visual encoding.

North sample values
PeriodPrimarySecondary
Jan3520
Feb4824
Mar4129
Apr6128
May5637
Jun7434
Jul6842

Implementation notes ​

  • Use SVG for small charts, where labels, focus targets and crisp resizing matter; use Canvas for thousands of marks and keep an HTML data alternative. The examples use SVG and CSS only, with no charting dependency.
  • On real data, use a shared domain, meaningful units, empty/loading/error states, and provenance. A pie or donut needs one whole; a gauge needs a real target. For long time series, add zoom or aggregation rather than squeezing points. An average overlay is a horizontal reference at the mean; a trend overlay is a fitted line, not a smoothed path through every point.
  • In production, give each mark a keyboard-accessible tooltip or synchronized data table. Do not rely on hue alone. Use a muted transition on series change, no perpetual chart animation, and turn transitions off under prefers-reduced-motion.

Dependency graph ​

DEMO · DEPENDENCY DAG

Plan → parallel work → tests → release

CompletedRunningPending

Layout patterns ​

ShapeAlgorithmUse it for
ChainOrdered vertical or horizontal sequenceA linear pipeline
Fan-out / fan-inTidy tree for the split; join at the shared successorParallel steps that converge
Layered DAGLongest-path layers, barycenter ordering within each layerMultiple dependencies and joins

The demo above uses fixed normalized coordinates for five sample nodes, not an automatic layout engine. For arbitrary real graphs, topologically sort nodes, assign layers from dependencies, and apply crossing reduction. Keep cards and labels in HTML for focus, search, and screen readers when building a full dashboard.

Edge and particle recipe ​

Use a quadratic Bézier curve with a perpendicular offset near the midpoint, then evaluate the same curve at progress t ∈ [0,1] for each particle. A simple arc uses Q cx cy x2 y2; the animation uses about 700 ms per particle and 240 ms between events in the source prototype. Cap active particles (prototype cap: 220). Never spawn a particle for an unobserved event.

js
const x = (1-t)**2*x1 + 2*(1-t)*t*cx + t*t*x2
const y = (1-t)**2*y1 + 2*(1-t)*t*cy + t*t*y2

State language ​

  • Pending: quiet indigo/gray; no pulse.
  • Running: amber pulse/breathing glow only while there is actual work.
  • Succeeded: green; one transition ring, then settle.
  • Failed: red, persistent label and repair action; never an endless urgent pulse.
  • Blocked: muted edge or dashed line plus explicit reason.

Use one canvas animation loop, scale by devicePixelRatio, resize with ResizeObserver, and pause when offscreen in a production app. With prefers-reduced-motion, draw a static final frame, retaining labels and status. The illustration in this guide pauses the particles and pulse under that setting.

Source and scope

Adapted from two private motion prototypes created on September 29, 2026. This catalog intentionally uses generic sample labels; it does not connect to agents-ai or reveal task details. The prototype includes tidy-tree and layered-DAG implementations; this page documents their contract without claiming this five-node drawing is an automatic layout.

Looking for dashboards built from these charts? See the Reports example.