Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

VariantAliasesUses3D form
basicdefault, direction, classiclabels, left, rightA thin ribbon from left to right per label, green for a rise and red for a fall.
monochromemono, uniform, single_colorlabels, left, rightThe same ribbons, every one the same flat tone instead of green/red.
highlightedhighlight, top, moverslabels, left, rightThe three labels with the biggest change stand out at full tone; every other ribbon fades to a dim grey.
bumpsbumpchart, rank, rankinglabels, left, rightRibbons positioned by rank instead of raw value, curved into a gentle S between the two ranks.
curvedcurve, bezier, smoothlabels, left, rightThe same left-to-right ribbons eased into a smooth S-curve instead of a straight diagonal.
thickmagnitude, weighted, weightlabels, left, rightRibbon thickness scales with the size of the change: bigger moves stand out as chunkier bands.
divergingdelta, change, centeredlabels, left, rightA centred bar per label, rising above zero for a gain and sinking below it for a loss.
steppedstep, elbow, rectilinearlabels, left, rightThe 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.