Sunburst Chart 3D
Signature
sp.sunburst3d(title, labels=None, parents=None, values=None, *, variant="basic", orientation3d="iso", scene="default", theme="none", zone=None, max_points=None, bg_color="#1a1a2e", width=900, height=560, x_label="", y_label="", z_label="", **kwargs) -> Chart
Aliases: sp.build_sunburst3d_chart(), sp.sunburst_3d(), sp.sunburst3d_chart(), sp.sunburst3d_family(), sp.sunbursts3d().
Description
sp.sunburst3d() is the 3D twin of sp.sunburst(): every one of the 7 sunburst variants has a 3D form, selected with the same variant keyword and fed with the same hierarchy. Every node draws its own ring arc at a radius set by its depth and an angular span set by its share of its parent’s value, toned by which top-level branch it belongs to. Rings, depth-fade and gaps come from a shared hierarchy strategy also used by icicle3D, so geometry is never hand-written per variant. Very deep or wide trees are capped level by level to a block budget, always keeping whole depth levels intact.
Variants
| Variant | Aliases | Uses | 3D form |
|---|---|---|---|
basic | default, classic, ring | labels, parents, values | Nested rings, one per depth level, each wedge sized by its own angular share of its parent. |
donut | hole, ring_hole, donut_ring | labels, parents, values | The same nested rings with a wider hole at the centre. |
outlined | outline, stroke, wireframe | labels, parents, values | Flatter wedges, closer to a wireframe reading of the same hierarchy. |
gapped | spaced, isolated, petals | labels, parents, values | A small angular gap opens between every wedge. |
depth_fade | fade, fading, depth | labels, parents, values | Rings shrink in height as they go deeper, so depth reads from the silhouette, not just the radius. |
mono | monochrome, single, uniform | labels, parents, values | Every wedge takes the same hue instead of one per branch. |
zoomable | zoom, animated, interactive, drill | labels, parents, values | The same nested rings as basic; the interactive drill-down is a 2D-only feature. |
Data
labels name each node, parents gives the label of its parent (empty for a root) and values its own weight; a node’s value is grown to the sum of its children when that sum is larger, exactly like the 2D chart. Each branch takes its own hue, so a tree with several top-level entries (several rows with an empty parents) reads more colourfully than one wrapped in a single root.
3D planes
The viewpoint is independent from the variant: orientation3d picks the initial camera plane and applies to every variant; the view always stays draggable.
orientation3d="iso" — Isometric three-quarter view (default).orientation3d="horizontal" — Side-on view, almost at floor level.orientation3d="vertical" — Top-down view from above.orientation3d="front" — Front elevation, nearly flat.3D scenes
scene swaps the environment the columns are drawn in and applies to every variant and every plane.
scene="default" — Each series keeps its own categorical palette color, rendered as shaded 3D bars on a flat grid.scene="terrain" — The data is resampled onto a dense grid and rendered as hundreds of thin colormap-colored columns, forming a continuous mountain-of-bars terrain.scene="tower" — The data is resampled onto a dense field of round skyscraper-like towers instead of boxes, for a city-skyline reading of magnitude.scene="radial" — The data is resampled onto a dense polar grid of rings and wedges radiating from the center, like a 3D radar/sonar sweep of the value field.scene="podium" — The data is resampled onto a dense grid and quantized into stepped terrace levels, like a rice-terrace contour map, to read value bands at a glance.Themes
theme restyles the whole canvas (colour grade and glow) and applies to every variant, scene and plane.
theme="deluxe"theme="prism"theme="aurora"theme="inferno"theme="frost"theme="glow"theme="glass"theme="neon"theme="cosmic"Auto-scaling zone
The 3D zone (floor, walls, axes and camera) scales to the elements: its length, width and height follow the extents of the drawn blocks, a minimum floor depth keeps single rows readable, wide scenes are drawn flatter and the camera frames the whole box. The axis ticks read the real data range. Pass zone=[x, y, z] to force the proportions of the box instead; the longest side is normalised to 1.
Parameters
Returns
Chart object with an .html property and a .show() method.