data |
Row[] |
(required) |
One row per slice. A row's fill field colors its slice. |
config |
ChartConfig |
(required) |
The chart config: per data key a label, a color (any CSS color, usually var(--chart-N)) or a theme { light, dark }, and an optional icon; legendType and tooltipType; strokeDasharray and strokeOpacity dash and fade a line or an area's edge. Each key becomes --color-<key> on the chart. |
value |
string | string[] |
(required) |
The value field. Several draw concentric rings from the same rows, the first innermost. |
name |
string |
"" |
The name field: tooltip and legend names and colors through the config. |
innerRadius |
number | string |
0 |
px, or a percent of the radius. Above 0 draws a donut. |
outerRadius |
number | string |
"80%" |
px, or a percent of the largest radius that fits. |
maxRadius |
number |
0 |
The most the outer radius may be, px; 0 for no cap. |
startAngle |
number |
0 |
Degrees, counter-clockwise from three o'clock. |
endAngle |
number |
360 |
180 with startAngle 0 draws a half pie. |
paddingAngle |
number |
0 |
Degrees left between slices. |
minAngle |
number |
0 |
The least angle of a slice with a value, degrees. |
cornerRadius |
number |
0 |
Rounds each slice's corners, px. |
separator |
number |
-1 |
The gap drawn between slices in the surface color, px. -1 follows the theme; 0 is none. |
ringGap |
number |
10 |
px between rings. |
hide |
boolean | string[] |
false |
Rings not drawn: true for all, or their value keys; the others keep their places. |
layout |
"centric" | "radial" |
"centric" |
The chart layout. A pie places its slices by its own angles and radii, so both draw the same. |
labels |
boolean | { position?: "outside" | "inside"; key?: string; formatter?: (value, row) => string; line?: boolean; offset?: number } |
false |
Values or another field outside each slice on a leader line, or inside it. |
centerValue |
string |
"" |
Large text in the donut's hole. |
centerLabel |
string |
"" |
Small text under the center value. |
activeShape |
"none" | "grow" | "ring" |
"none" |
Draw the active slice grown by activeOffset, or grown with a ring outside it. |
inactiveShape |
"none" | "dim" |
"none" |
dim fades every slice but the active one. |
margin |
{ top?, right?, bottom?, left? } |
{} |
Space around the plot in px. |
cx, cy |
number | string, number | string |
"50%", "50%" |
The center of the pie: px from the left and top edges, or a percentage of the plot. |
activeOffset |
number |
10 |
px the active slice grows. |
tooltip |
boolean | { indicator?: "dot" | "line" | "dashed"; hideLabel?: boolean; hideIndicator?: boolean; color?: string; labelKey?: string; nameKey?: string; labelFormatter?: (label, row) => string; formatter?: (value, key, row) => string; footer?: (row) => string; footerLabel?: string; unit?: string; defaultIndex?: number; cursor?: boolean; filterNull?: boolean; trigger?: "hover" | "click"; active?: boolean; position?: { x?, y? }; reverseDirection?: { x?, y? }; itemSorter?: "name" | "value" | "key" | (item) => number | string; includeHidden?: boolean; animationDuration?: number; animationEasing?: string | (t) => number; isAnimationActive?: boolean } |
true |
The tooltip: false turns it off; an object sets the indicator, hides the heading or swatches, takes names and headings from other keys, formats them, adds a footer line, or turns off the hover cursor. More options: trigger click (a click shows it and it stays), active (always or never shown), position (a fixed spot), reverseDirection, itemSorter and includeHidden. |
legend |
boolean | { position?: "top" | "bottom" | "left" | "right" | "center" | "insideTop" | "insideBottom" | "insideLeft" | "insideRight" | "insideTopLeft" | "insideTopRight" | "insideBottomLeft" | "insideBottomRight" | { x, y }; offset?: number; iconSize?: number; verticalAlign?: "top" | "middle" | "bottom"; align?: "left" | "center" | "right"; layout?: "horizontal" | "vertical"; iconType?: "square" | "rect" | "circle" | "line" | "plainline" | "diamond" | "triangle" | "cross" | "star" | "wye" | "none"; formatter?: (name, key) => string; itemSorter?: "name" | "key" | (item) => number | string; hideIcon?: boolean; nameKey?: string; toggle?: boolean } |
false |
A legend of the slices, named through the config by the name field; toggle hides slices. |
active |
number (two-way) |
-1 |
The active slice (ring index times the row count plus the row index). Hover and arrows move it; leaving restores it. |
hidden |
string[] (two-way) |
[] |
Slice names left out; the others fill the circle. |
label |
string |
"Pie chart" |
The chart's accessible name and its table's caption. |
animate |
boolean |
true |
Marks enter with motion and move to new values. Off under prefers-reduced-motion. |
animation |
{ begin?: number; duration?: number; easing?: string | (t) => number; matchBy?: "index" | "append" | (item, index) => key; interpolate?: (items, t) => items; newValues?: boolean } |
{} |
Times the entry and the move to new data. matchBy pairs old and new items by position or by a key, matchByDataKey(field) from the chart package; interpolate draws every frame of a change from the paired items and the eased time; newValues false shows an unpaired new point at once. |
showTable |
boolean |
false |
Show the chart's data table under the plot. The table is always in the accessibility tree. |
class |
string |
"" |
Classes on the figure. Size the chart here: it keeps a 16:9 box unless given a height or aspect-ratio. |
attrs |
Record<string, string | number | boolean | undefined> |
{} |
Any other attributes for the figure: id, data-testid, aria-*. |
syncId |
string |
"" |
Charts with the same syncId share the active item and its tooltip. |
syncMethod |
"index" | "value" |
"index" |
Match the shared item by position, or by its category or name. |
onActiveChange |
(index: number) => void |
() => {} |
The user moved the active item (hover, leave or keys). |
onItemClick |
(index: number) => void |
() => {} |
A click or tap on an item, with its index. |
onHiddenChange |
(hidden: string[]) => void |
() => {} |
A legend toggle changed hidden. |