Boxplot Chart 3D
Signature
sp.boxplot3d(title, labels=None, values=None, *, variant="basic", series=None, notch=False, jitter=0.35, boxen_depth=4, orientation3d="iso", scene="default", theme="none", bg_color="#1a1a2e", width=900, height=560, x_label="", y_label="", z_label="", **kwargs) -> Chart
Aliases: sp.build_boxplot3d_chart(), sp.boxplot_3d(), sp.boxplot3d_chart(), sp.box3d().
Description
sp.boxplot3d() is the 3D twin of sp.boxplot(): every one of the 10 boxplot variants has a 3D form, selected with the same variant keyword and fed with the same samples. Boxes, whiskers, notches, point clouds, violin slices and letter-value bands come from shared distribution strategies, so geometry is never hand-written per variant. The median is a highlighted slab across every box.
Variants
| Variant | Aliases | Uses | 3D form |
|---|---|---|---|
basic | simple, vertical | labels, series | One box per category from the first to the third quartile, a thin whisker column and a highlighted median slab. |
horizontal | hbox, horiz, h | labels, series | The basic layout turned a quarter-turn: categories run along the depth axis instead of the width axis. |
notched | notch, ci, confidence | labels, series, notch | Boxes split around a narrower waist at the median, sized by the confidence interval of the median. |
grouped | group, side_by_side, multi | labels, series | Each series becomes a row of boxes side by side in depth, categories along the width axis. |
points | all_points, scatter, raw | labels, series | Boxes plus every raw sample as a small cube aligned on the box axis. |
outliers | outlier, fliers, anomalies | labels, series | Boxes plus the samples beyond the whisker fences drawn as cubes. |
strip | jitter, stripplot | labels, series, jitter | Slim boxes with every sample scattered across the width by a deterministic jitter. |
swarm | beeswarm, swarmplot | labels, series | Slim boxes with every sample pushed sideways just enough not to overlap its neighbours. |
violin | kde_overlay, density | labels, series | A stack of slices whose width follows the Gaussian density of the samples. |
letter_value | boxen, lv, tukey | labels, series, boxen_depth | Nested bands for the quartile, eighth, sixteenth… ranges, each narrower than the last (boxen_depth levels). |
Data
Pass one list of samples per category in series (with labels naming them), or flat values with repeated labels. The grouped variant reads series as groups, each split evenly across the categories.
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.