Skip to content
microcharts
ReferenceFrontierWindBarb

WindBarb

WindBarb encodes bearing as the shaft angle and magnitude as counted WMO barbs.

encodes
shaft angle + quantized barb count
precision
medium
nodes
≤ 3
collection
Frontier
Source

Southwest at 32, in one character. WindBarb points the shaft along the bearing and counts the magnitude in barbs: a half barb, a full barb, and a pennant are fixed quanta, calibrated to the chart's step, so counting them gives the magnitude without a scale to measure against. The per-barb quantum is stated next to every example below.

WindBarb
interactive · 4.3 kB · static · 2.73 kB

Install

Import & usereact/wind-barb
import { WindBarb } from "@microcharts/react/wind-barb";<WindBarb direction={225} magnitude={32} step={10} title="Wind" />
Needs package + stylesheetSet up with AI

Try it

Live playground
onSelect
idle
  1. hover · click · Enter…

Hover or focus the chart — values are read out as you move.

direction ° · 225
magnitude · 32
each barb = · 10
label
readout chip
animate
import { WindBarb } from "@microcharts/react/wind-barb/interactive";<WindBarb  direction={225}  magnitude={32}/>

Reading the barb

A single glyph carries the whole reading, so its accessible name is the full sentence and the interactive entry has nothing to pick between — hover or focus reports the one reading through onActive / onSelect, with no index props. This gallery is the read-back key: each full barb is one step, a half barb is half a step, and a pennant is five.

compass — the same magnitude at eight bearings
magnitude ladder — count the barbs: a half barb is 5, a full barb 10, a pennant 50

When to use it

Use it for wind or current direction plus strength, traffic flow, net migration, and request routing. For an exact magnitude add label; for a time series use Sparkline.

Sizing

table cell
with label

Variants

calm
arrow
label

Edge cases

calm — the open-circle glyph, not a zero-length shaft
negative magnitude flips the bearing 180° (dev warning, not an error)
a magnitude past what the shaft can hold saturates the drawn barbs; the summary keeps the true number
locale

format/locale reach the label="value" numeral and the accessible summary's magnitude together: the component builds one formatter and reuses it for both. A near-zero magnitude renders the conventional open circle for calm rather than a zero-length shaft, and a negative magnitude flips the bearing 180° with a dev warning.

Four homes

In a sentence

Wind at KSFO — SW 32 kt, three full barbs.

In a table cell
KSFO225° 32
KJFK180° 18
KORD270° 24
In a KPI card
Wind
225°· 32 kt
In a tab header
KSFOKJFKKORD

Preview uses the public chart API only. When an interactive twin exists, it swaps in with the same props and no entrance motion - code samples stay on the static import. Placement recipes: Composition, Sizing.

Accessibility

The accessible name is the full reading: "Southwest (225°), magnitude 32." Calm renders as "Calm." The glyph is self-describing, so rows of barbs get their interaction from the host table or list rather than from the mark.

This chart is a single unit, so there is nothing to rove between: a click, tap, Enter or Space selects it and fires onSelect, and no selection stays pinned. That is the scalar half of the shared interaction contract. Hover or focus also reveals the reading itself in a floating chip, for the sizes and label modes where the mark does not print it; readout={false} drops the chip and keeps everything else.

Props

PropTypeNotes
direction*numberDegrees; 0 = up/north, clockwise.
magnitude*numberAny unit; quantized into barbs.
stepnumberFull-barb quantum (each barb = step).
label"value" | "none"Numeric magnitude beside the glyph.
mode"barb" | "arrow""arrow" swaps quantized barbs for a plain direction arrow + label.
sizenumberBarb box edge in viewBox units (default 32).
animatebooleaninteractiveOpt-in entrance motion when the chart mounts client-side — add import "@microcharts/react/motion" once. Inert on the server, on hydrated server HTML, and under prefers-reduced-motion.

Plus the shared grammar — data, domain, color, title, summary, format — and the layout props (width, height, className, style) that every chart accepts. Interactive entries also share animate and live, and — wherever a chart has more than one navigable unit — onActive, onSelect, selectedIndex and defaultSelectedIndex; and — wherever the chart shows a hover value — readout. See the shared grammar.

Related charts