Skip to content
microcharts
ReferenceCoreMiniBar

MiniBar

MiniBar compares a handful of categories as zero-anchored bars, in the order the data arrives.

encodes
bar length, zero-anchored
precision
high
nodes
1 per bar (≤ 8 documented)
collection
Core
Source

MiniBar draws one zero-anchored bar per category, in the order the data arrives, so a row of categories reads at a glance: which is biggest, and by roughly how much. That order is often information itself: weekday order and funnel order carry meaning that ranking would destroy, so sorting is an explicit order prop and never silent. An explicit domain is widened to include zero, because a bar whose length doesn't start at zero misstates its own magnitude, and the component refuses to draw one.

MiniBar
interactive · 5.69 kB · static · 3.14 kB

Install

Import & usereact/mini-bar
import { MiniBar } from "@microcharts/react/mini-bar";// regions — real values under “Sample data” below<MiniBar data={regions} title="Sales by region" />
Sample data
const regions = [  { label: "East", value: 940 },  { label: "West", value: 410 },  { label: "South", value: 620 },  { label: "North", value: 120 },];
Needs package + stylesheetSet up with AI

Try it

Live playground
onActive
idle
  1. hover · rove · click…

Hover a bar or rove with arrow keys — each announces its label, value, and rank.

order
highlight
orientation
signed + valence
label
readout
animate
import { MiniBar } from "@microcharts/react/mini-bar/interactive";// regions — real values under “Sample data” below<MiniBar  data={regions}/>
Sample data
const regions = [  { label: "East", value: 940 },  { label: "West", value: 410 },  { label: "South", value: 620 },  { label: "North", value: 120 },];

When to use it

Use it for per-row category mix in tables and small comparisons in KPI cards. Past 8 categories reach for a full bar chart; for time series use SparkBar.

Sizing

table cell
signed with polarity

Variants

ranked vs highlight
signed + polarity
locale

The extremes named in the summary follow format/locale: 12400 reads "12.400" under de-DE rather than the English "12,400".

Edge cases

null keeps its slot
single category

A null value draws no bar but keeps its band, so the two real bars around it stay exactly as far apart as in a fully populated row, and a column of MiniBars stays aligned through missing data. A single category still renders, and its summary says so plainly ("1 category…") rather than degenerating into a bare-bar special case. Past 8 categories every bar still renders, with nothing dropped or truncated, but the component logs a dev warning: MiniBar is a cell chart, and a wider comparison belongs in a full bar chart.

Four homes

In a sentence

Q3 revenue splits four ways — East alone outsells North more than seven to one.

In a table cell
OrtizEast
HainesWest
KwanSouth
In a KPI card
Largest region
East45% of Q3 revenue
In a tab header
RegionChannel

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 gives the count and the extremes: "4 categories. Highest East 940, lowest North 120." The interactive entry announces each bar with its rank: "East: 940 — 1st of 4."

The interactive entry follows the shared interaction contract: arrow keys rove between units on both axes, Home and End jump to the ends, and a click, tap, Enter or Space selects a unit — pinning its readout so it survives blur, until you select it again, press Escape, or press outside the chart. On touch, a tap pins and a drag scrubs.

Props

PropTypeNotes
data*{ label; value }[]Categories in meaningful order.
order"data" | "desc" | "asc"Ranking read vs positional read — data-facing, not styling.
highlightnumber | stringIndex or label to emphasize.
orientation"horizontal" | "vertical"Rows for wider, shorter cells.
positive"up" | "down"Engages pos/neg tokens on signed data.
label"none" | "max"Peak-value readout (vertical only; default "none").
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