Area Chart 3D
Signature
sp.area3d(title, x_labels=None, series=None, *, variant="basic", series_names=None, 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_area3d_chart(), sp.area_3d(), sp.area3d_chart(), sp.area3d_family(), sp.areas3d().
Description
sp.area3d() is the 3D twin of sp.area(): every one of the 9 area variants has a 3D form, selected with the same variant keyword and fed with the same series. A single series is a sloped-top strip rising from the floor; several series each stand on their own depth row, or stack on top of one another (in raw or percent terms) as a shared band strategy also used by line3D. Long series are pooled to a budget (max_points), so hundreds of thousands of points stay interactive.
Variants
| Variant | Aliases | Uses | 3D form |
|---|---|---|---|
basic | overlay, default, simple | x_labels, series | Each series its own sloped-top strip on a separate depth row, rising from the floor. |
stacked | stack | x_labels, series | Series stacked on top of each other, each band’s floor the running total of the ones before it. |
percent | percent_stacked, normalized, stream100 | x_labels, series | The same stack normalised so every point’s total reads exactly 100%. |
spline | smooth, curved | x_labels, series | A Catmull-Rom curve through the points, densified into many short strips, on separate rows. |
step | stepped, stairs | x_labels, series | A staircase profile filled down to the floor instead of a sloped one. |
gradient | glow, fade | x_labels, series | A smooth spline strip toned by height, fading from the floor to the peak. |
ribbon | outlined, bordered, ggplot | x_labels, series | The percent stack pressed to a thin, striped band, a lighter outlined reading of the stack. |
wave | signed, oscillating, stackplot | x_labels, series | Series stacked with signed values, so the whole band can swing above and below zero. |
leader | leaderboard, frontrunner, lead_race | x_labels, series | Every series as a faint thin band plus a highlighted ribbon that switches to whichever series currently leads. |
Data
x_labels name the points and series (with series_names) gives one or more value lists; passing a single flat values list is equivalent to one series.
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.