Skip to content

Donut chart

One total, split into a few parts.

Definition · Updated Nov 2, 2026

A donut chart splits one total into a few slices, a full pie in Hearth and a ring in Signal, with each part's amount and share listed beside it. Use it for revenue by plan, traffic by source or any single split with four or five parts.

Pay once. Every update included.

Live preview

MRR by planMonthly recurring revenue of $184K by plan: Enterprise $82K (45%), Business $54K (29%), Team $31K (17%), Starter $17K (9%).Enterprise$82KBusiness$54KTeam$31KStarter$17K
MRR by plan
PlanMRRShare
Enterprise$82K45%
Business$54K29%
Team$31K17%
Starter$17K9%

Sample data: monthly recurring revenue by plan, Enterprise $82K (45%), Starter $17K (9%)

Size
Data shape
Two to six parts of one total
Good for
Revenue by plan, traffic by source
Avoid when
Parts are close in size or change over time
Sizes
XS, S, M and L, re-laid out from the data

Anatomy

Inspect it like the Figma file.

The same layers, names and tokens as the component. Select one to read its size, fill and style.

Layers

017 / Donut

chart/017-pie-donut
plot · pie
Layer
slice · business
Type
Ellipse
Size
168 × 168
Fill
data/cat-2
Group
Marks · 8

Layers

017 / Donut

chart/017-pie-donut
plot · pie
Layer
slice · business
Type
Ellipse
Size
124 × 124
Fill
data/cat-2
Group
Marks · 8

Sizes

Re-laid out, never scaled.

The same data at XS, S, M and L. Every size is redrawn from the data, so text and line weights never shrink.

M against S

Width360 px480 px

Plot328 px440 px

Labels812

Marks88

Height212 px246 px

Same tokens at every size: text styles, 1 px lines and mark radius stay put.

When to use

One split, one moment.

Three signs it fits, and three signs another type fits better.

Is it one moment, not a trend?

The split over many periods.

Yes: Keep the donut

Are there six parts or fewer?

Many parts in nested groups.

Yes: Keep the donut

Do the parts sit in one level?

Parts with sub-parts.

Yes: Keep the donut

Code and Figma

One name in Figma and in code.

Every Figma property is a prop with the same name and values. One command installs it.

Figma

chart/017-pie-donut

size
legend
Property = propValuesDefault
size"xs" · "s" · "m" · "l""xs"
legendfalsefalse
color"cat-1" · "cat-2" · "cat-3" · "cat-4""cat-1"
npx shadcn add @chartory/donut
donut.tsx
import { Donut } from "@/components/chartory/donut"import { mrrByPlan } from "./mrr-by-plan"export function MrrByPlan() {  return (    <Donut      data={mrrByPlan}      size="m"      legend={false}    />  )}

Hearth widget

Donut as a widget.

The chart in a Hearth card with a hero number and two blocks. One token set, light and dark.

Code
Get the code

EmberPreset

ChartoryDefault preset

Pick the blocks, the size and the preset for your own widget.

Read the Hearth widget docs

FAQ

Donut questions.

What people ask before they put a donut in a dashboard.

Something else?

hello@usechartory.com
  • In the list next to the chart: each plan with its amount and share (Enterprise $82K, 45%). The chart gives the shape, the list gives the numbers.

Related types

The same question, a different shape of answer. Every type ships in Figma and in code.

Same family

Part of a whole

16 types in Chartory answer this question.