Skip to content
commit-766c8d6756a1

Interactive pie

Compact part-to-whole views for a few named categories and their shares of one total.

Purpose
Summarize a small named distribution as parts of a total.
Use when
Few categories and approximate share comparison are the goal.
Avoid when
There are many slices or close values; use bars for reliable comparison.
Equivalent data
Pair the chart with exact values and shares in text or a table.
Exact pie values
SeriesSectorValueShare
SeasonsSpring8129.6%
SeasonsSummer8731.8%
SeasonsAutumn4717.2%
SeasonsWinter5921.5%
Exact pie values
SeriesSectorValueShare
SeasonsSpring8149.4%
SeasonsSummer1811.0%
SeasonsAutumn2515.2%
SeasonsWinter4024.4%
Exact pie values
SeriesSectorValueShare
SeasonsSpring5634.8%
SeasonsSummer00.0%
SeasonsAutumn9458.4%
SeasonsWinter116.8%
Exact pie values
SeriesSectorValueShare
SeasonsSpring6224.5%
SeasonsSummer8935.2%
SeasonsAutumn2811.1%
SeasonsWinter7429.2%
Exact pie values
SeriesSectorValueShare
AreaSpring1111.1%
AreaSummer4545.5%
AreaAutumn3737.4%
AreaWinter66.1%
Exact pie values
SeriesSectorValueShare
RadiusSpring9538.5%
RadiusSummer6626.7%
RadiusAutumn2811.3%
RadiusWinter5823.5%
Exact pie values
SeriesSectorValueShare
AreaSpring4717.5%
AreaSummer4717.5%
AreaAutumn8732.3%
AreaWinter8832.7%
RadiusSpring9058.4%
RadiusSummer159.7%
RadiusAutumn4126.6%
RadiusWinter85.2%
Exact pie values
SeriesSectorValueShare
Outer areaSpring8742.9%
Outer areaSummer3115.3%
Outer areaAutumn2914.3%
Outer areaWinter5627.6%
Inner radiusSpring3720.7%
Inner radiusSummer3117.3%
Inner radiusAutumn8547.5%
Inner radiusWinter2614.5%
Exact pie values
SeriesSectorValueShare
SeasonsSpring135.0%
SeasonsSummer9034.6%
SeasonsAutumn9436.2%
SeasonsWinter6324.2%
Exact pie values
SeriesSectorValueShare
SeasonsSpring8149.4%
SeasonsSummer1811.0%
SeasonsAutumn2515.2%
SeasonsWinter4024.4%
Usage Example
@interactivepie.Pie(interactivepie.Config{
  Label: "Rose area",
  Series: []interactivepie.Series{{
    Name: "Seasons", InnerRadius: 40, OuterRadius: 75,
    RoseMode: interactivepie.RoseArea,
    LabelContent: interactivepie.LabelNameAndValue,
    Data: seasonalData,
  }},
})

Accessibility

The figure name comes from Label and Caption remains visible. Every example includes a keyboard-accessible exact-value disclosure with series, sector, value, and share; do not make hover, motion, or color the only route to meaning.

Choose the encoding

A standard pie maps value to angle. A donut reserves a non-data center. Area roses use equal angles and encode values by sector area; radius roses retain proportional angles and add radial variation. Side-by-side and nested series need clearly separated centers or non-overlapping radii.

Interactive capabilities

Hover tooltips, selectable sectors, typed emphasis, and optional rotating emphasis support exploration. Rotating emphasis stops for reduced-motion users. Exact values and shares remain in the adjacent disclosure rather than depending on hover, motion, or color.

Shared controls and modes

Expand, fullscreen, PNG export, hidden/disabled/unwrapped lifecycle modes, resize events, and HTMX replacement behavior come from the shared chart wrapper. Static/vector pie is the better choice for print, server-only delivery, SVG output, or a page that must work without the browser runtime.

Go API

v0.0.1

The examples above cover behavior and composition. pkg.go.dev is the canonical reference for exported types, functions, methods, and Go documentation.

github.com/araihu/goshtoso-charts/components/interactive/pie

Enabled, disabled, hidden, and omitted wrapper behavior, controls, export, and client transitions are shared by every chart. Review chart controls, then compare static/vector and interactive capabilities.

Open v0.0.1 API