Sunburst

Part-to-whole as nested rings: each item is an arc whose angle shows its share of the total, the top-level groups sit in the innermost ring and each level of the optional per-item path (1 to 3 group names, top down) is one ring further out, so a budget, a disk-usage breakdown or a folder tree reads from the inside out. Laid out by d3-hierarchy partition() and drawn with d3-shape arc() paths on the server, so there is no script. With the optional layout "icicle" the same hierarchy is drawn as horizontal bars instead, the top-level groups in the left column and each level one column further right. A group's hue follows its top-level group and each ring out is a lighter shade of it; every arc or bar carries its name, path, value and share in a hover title and in the hidden table (item, path, value, share of total), and the aria label gives the total, the number of groups and the largest group. Labels are drawn only where they fit and are rotated to read outward, never upside down; the centre of the ring shows the total. Motion-ready: every moving value reads --p (build progress 0 to 1, default 1) through a per-ring --k, so a motion_timeline track on p builds it ring by ring from the inside out and the standalone render is the finished picture; reduced motion shows the end state.

Surfaces
webgoogle-apps-script-webmcp-appsandroid
Degraded on
SurfaceNote
pdfPrints the finished picture; no motion
Live preview
Where the budget goes (k EUR)
People
Engineering
Salaries
Training
Sales
Salaries
Commission
Recruiting
Operations
Cloud
Compute
Storage
Network
Offices
Rent
Utilities
Insurance
Marketing
Paid
Search
Social
Events
Conference
3,290 k EUR
total
Angle shows share of the total; each ring out is one level deeper.
ItemPathValueShare of total
ComputeOperations / Cloud420 k EUR12.8%
StorageOperations / Cloud180 k EUR5.5%
NetworkOperations / Cloud95 k EUR2.9%
RentOperations / Offices300 k EUR9.1%
UtilitiesOperations / Offices60 k EUR1.8%
InsuranceOperations70 k EUR2.1%
SalariesPeople / Engineering900 k EUR27.4%
TrainingPeople / Engineering40 k EUR1.2%
SalariesPeople / Sales520 k EUR15.8%
CommissionPeople / Sales130 k EUR4.0%
RecruitingPeople85 k EUR2.6%
SearchMarketing / Paid160 k EUR4.9%
SocialMarketing / Paid110 k EUR3.3%
ConferenceMarketing / Events75 k EUR2.3%
ContentMarketing55 k EUR1.7%
LegalTop level90 k EUR2.7%
Fields
FieldTypeRequired
titlestring (optional, max 80).optional
itemsarray (required, 2 to 40) of {path (optional, array of 0 to 3 strings, max 20 each: the item's ancestor groups from the top down; same shape as the treemap's nested mode), name (max 24, default "Item n"), value (number above 0)}. An item without a usable path is its own arc in the innermost ring. Items with a value of 0 or less, a value that is not a finite number, or that are not an item are dropped and counted in a note; items beyond the first 40 are noted and not drawn. With fewer than 2 usable items a note replaces the chart.optional
layout"radial" or "icicle" (optional, default "radial"). radial draws concentric rings (a sunburst); icicle draws horizontal bars with the top-level groups on the left. Any other value is drawn as radial.optional
unitstring (optional, max 12). Appended to every value in the title, the centre, the aria label and the hidden table.optional
versioninteger (optional, default 1). The sunburst contract the payload was written for. Only version 1 exists; a higher whole number is drawn as version 1 with a note.optional
Example payload
{
  "type": "sunburst"
}
ARD catalog entry
{
  "identifier": "urn:air:a2uicatalog.ai:atom:sunburst",
  "displayName": "Sunburst",
  "type": "application/vnd.a2ui.atom+json",
  "url": "https://a2uicatalog.ai/atoms/sunburst",
  "capabilities": [
    "web",
    "google-apps-script-web",
    "mcp-apps",
    "android"
  ],
  "description": "Part-to-whole as nested rings: each item is an arc whose angle shows its share of the total, the top-level groups sit in the innermost ring and each level of the optional per-item path (1 to 3 group names, top down) is one ring further out, so a budget, a disk-usage breakdown or a folder tree reads from the inside out. Laid out by d3-hierarchy partition() and drawn with d3-shape arc() paths on the server, so there is no script. With the optional layout \"icicle\" the same hierarchy is drawn as horizontal bars instead, the top-level groups in the left column and each level one column further right. A group's hue follows its top-level group and each ring out is a lighter shade of it; every arc or bar carries its name, path, value and share in a hover title and in the hidden table (item, path, value, share of total), and the aria label gives the total, the number of groups and the largest group. Labels are drawn only where they fit and are rotated to read outward, never upside down; the centre of the ring shows the total. Motion-ready: every moving value reads --p (build progress 0 to 1, default 1) through a per-ring --k, so a motion_timeline track on p builds it ring by ring from the inside out and the standalone render is the finished picture; reduced motion shows the end state.",
  "representativeQueries": [
    "show a sunburst: share of a total in nested rings",
    "part-to-whole as nested rings: each item is an arc whose angle shows its share of the total, the top",
    "render a sunburst"
  ]
}
← Full ARD catalog
Deploy your own Google Apps Script renderer

The renderer is an open-source Google Apps Script web app. Deploy your own instance in 4 commands — you own the URL, no dependency on the demo endpoint.

git clone https://github.com/a2uicatalog/a2ui
cd a2ui/apps-script-surface/gas-wired-renderer
clasp push && clasp deploy
Full deploy guide →