Dumbbell Chart 3D
Signature
sp.dumbbell3d(title, labels=None, start=None, end=None, *, variant="basic", series_name_start="Start", series_name_end="End", sort_order="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_dumbbell3d_chart(), sp.dumbbell_3d(), sp.dumbbell3d_chart(), sp.dumbbell3d_family(), sp.dumbbells3d().
Description
sp.dumbbell3d() is the 3D twin of sp.dumbbell(): every one of the 7 dumbbell variants has a 3D form, selected with the same variant keyword and fed with the same labels and start/end values. A rod stands between the two values of each row with a head at each end, and the ends take opposite tones of the colormap (cyan for the start, magenta for the end) so the direction of the change reads at a glance. Heads, arrowheads, halos and dashes come from shared stem strategies, so geometry is never hand-written per variant. Long inputs are pooled to a budget (max_points), so hundreds of thousands of rows stay interactive.
Variants
| Variant | Aliases | Uses | 3D form |
|---|---|---|---|
basic | default, classic, dot | labels, start, end | A thin rod between the start and end values with a cube at each end: cyan for the start, magenta for the end. |
arrow | directional, delta_arrow, flow | labels, start, end | The end is a stepped arrowhead pointing in the direction of the change, up for a rise and down for a fall. |
delta | change, diff, signed | labels, start, end | The rod and the end head are toned by the direction of the change, green for a rise and red for a fall, while the start stays neutral. |
barbell | thick, weighted, editorial | labels, start, end | A heavy rod with large head cubes, like a weighted bar. |
glow | halo, neon, soft | labels, start, end | Each head sits on a wide flat halo disc that makes both ends stand out. |
dotted | dashed, minimal, thin | labels, start, end | The rod is cut into thin dashes with small heads, the lightest reading of a dumbbell. |
ranked | ranking, ordered, numbered | labels, start, end | Rows are ordered by their end value, highest first, and stand on tiles toned by rank. |
Data
labels name the rows, start and end give the two values of each row, and series_name_start / series_name_end rename the two ends in the tooltips (Start and End by default). Hovering an end shows the row label and which end it is.
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.