Slope Chart 3D
Signature
sp.slope3d(title, labels=None, left=None, right=None, *, variant="basic", left_label="Before", right_label="After", 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_slope3d_chart(), sp.slope_3d(), sp.slope3d_chart(), sp.slope3d_family(), sp.slopes3d().
Description
sp.slope3d() is the 3D twin of sp.slope(): every one of the 8 slope variants has a 3D form, selected with the same variant keyword and fed with the same before/after values. Every label is a thin ribbon from its left value to its right value, toned green for a rise and red for a fall; all ribbons share the same depth row, crossing each other exactly like the 2D chart’s lines. diverging is the exception: it draws a centred bar per label sized by the change instead of a ribbon.
Variants
| Variant | Aliases | Uses | 3D form |
|---|---|---|---|
basic | default, direction, classic | labels, left, right | A thin ribbon from left to right per label, green for a rise and red for a fall. |
monochrome | mono, uniform, single_color | labels, left, right | The same ribbons, every one the same flat tone instead of green/red. |
highlighted | highlight, top, movers | labels, left, right | The three labels with the biggest change stand out at full tone; every other ribbon fades to a dim grey. |
bumps | bumpchart, rank, ranking | labels, left, right | Ribbons positioned by rank instead of raw value, curved into a gentle S between the two ranks. |
curved | curve, bezier, smooth | labels, left, right | The same left-to-right ribbons eased into a smooth S-curve instead of a straight diagonal. |
thick | magnitude, weighted, weight | labels, left, right | Ribbon thickness scales with the size of the change: bigger moves stand out as chunkier bands. |
diverging | delta, change, centered | labels, left, right | A centred bar per label, rising above zero for a gain and sinking below it for a loss. |
stepped | step, elbow, rectilinear | labels, left, right | The ribbon turned into a right-angle elbow: flat, then a vertical rise or fall, then flat again. |
Data
labels name each row and left/right give its two values; left_label/right_label rename the two sides in the axis text (Before/After by default).
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.