Lollipop Chart 3D
Signature
sp.lollipop3d(title, labels=None, values=None, *, variant="basic", color_groups=None, 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_lollipop3d_chart(), sp.lollipop_3d(), sp.lollipop3d_chart(), sp.lollipop3d_family(), sp.lollipops3d().
Description
sp.lollipop3d() is the 3D twin of sp.lollipop(): every one of the 9 lollipop variants has a 3D form, selected with the same variant keyword and fed with the same labels and values. Every lollipop is a thin stem topped by a head; the head is sized so it looks cubic once the zone is fitted, and rows, rings and panels come from the shared column layouts, so geometry is never hand-written per variant. Long inputs are pooled to a budget (max_points), so hundreds of thousands of values stay interactive.
Variants
| Variant | Aliases | Uses | 3D form |
|---|---|---|---|
basic | default, classic, vertical | labels, values | One thin stem per value topped by a head cube; the height is the value. |
cleveland | horizontal, h, row | labels, values | The basic layout turned a quarter-turn: the categories run along the depth axis. |
diverging | div, signed, delta | labels, values | Stems grow up or down from the mean instead of zero, toned green above it and red below. |
circular | polar, radial, round | labels, values | The stems stand on a ring, one per category, like a radial dot plot. |
office | grouped, season, panel | labels, values, color_groups | Categories laid out panel by panel with a gap between color_groups, one colour per group (a season, a team). |
conditional_color | conditional, threshold_color | labels, values | Horizontal stems coloured by sign: one colour for values at or above zero, another for negative ones. |
trend | colormap, arrow, annotated | labels, values | Heads toned along the colormap by value and joined by a sloped ribbon that follows the trend. |
custom | diamond, styled | labels, values | The head is a faceted diamond, a rhombic prism cut from two sloped wedges, instead of a cube. |
duel | head_to_head, versus, rivalry, radial_diverging | labels, values, color_groups | Two groups face each other on a ring: the first rises above the ring plane, the second hangs below it. |
Data
labels name the lollipops and values give their height; color_groups separates and colours the panels of office and the two sides of duel. Passing x, y and z together keeps the historical call that draws one lollipop per spatial point.
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.