Semicircle gauge
A half-donut arc encoding one bounded score (0–100). Beloved by execs, divisive among designers — and unavoidable when leadership says "give me a dial".
Overview
A 180° arc with a coloured fill from one end and a big centred number. The visual metaphor everyone already knows.
Gauges trade information density for emotional clarity. They take more pixels than a bullet or a progress ring to convey the same fact, but they read as "dashboard" the moment they land on screen — that aesthetic is sometimes the whole point. Use them on landing screens, exec dashboards, and customer-facing reports where a familiar shape outweighs a more efficient one.
Reach for it when the metric is bounded 0–100 (score, percentage, NPS), and the chart will be looked at by people who don't read charts every day. Skip it for analytical screens — a bullet chart shows the same data plus targets and bands in less space. Never stack ten gauges in a row; if you would, switch to bullets.
The chart
Customer satisfaction score at 82 of 100 — sits in the "good" band, marked by colour and label.
Required pieces
Chart.Gauge in v0.2 supports bands, target ticks, and animated reveal. For v0.1-alpha, the inline SVG above is the entire footprint.React snippet
Pass value, max, and optional bands; the band the value falls in becomes the auto-label.
Customising
Full-circle gauge
Replace the semicircle with a 270° arc when the dashboard tile is square; the bigger arc reads as "more bandwidth used".
<Chart.Gauge
value={82}
max={100}
arc="three-quarter"
startAngle={-225}
endAngle={45}
/>
Multi-gauge in a card
Three small gauges in a row for tri-metric dashboards. Drop the band labels — read each as a tile, not a feature.
{metrics.map(m => (
<Chart.Gauge
key={m.id}
value={m.value}
max={m.max}
width={140}
/>
))}
Gauge with delta
Add a "+5 vs. last month" subtitle so the gauge stops looking like a static dial.
<Chart.Gauge
value={82}
max={100}
sublabel="+5 vs. last month"
sublabelTone="success"
/>
In context
Inside a stat hero card on the exec dashboard. The gauge sits next to a short copy explanation and a comparison bullet of last quarter.
Accessibility
Gauges look approachable but pack a lot of meaning into an arc. Lead with the number and the band, both as text.
- One
role="img"per gauge. Inside,<title>names the metric;<desc>spells out the value, scale, and band. - The number is real text. Centred
<text>elements, not images — screen readers can read "82" without needing an aria-label. - Band name is text-redundant. "Good" appears both as a coloured pill and as the band label in the aria-label.
- Min/max labels visible. "0" and "100" at the arc's endpoints save users from inferring the scale.
- Target tick has a non-colour cue. The target is a thicker ink-coloured tick plus an aria-label "target 80" inside the desc.
- No motion in reduced motion. The arc draw-in honours
prefers-reduced-motion: reduceand shows the final state immediately.