Funnel Chart 3D
Signature
sp.funnel3d(title, labels=None, values=None, *, variant="basic", series=None, series_names=None, category_series=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_funnel3d_chart(), sp.funnel_3d(), sp.funnel3d_chart(), sp.funnel3d_family(), sp.funnels3d().
Description
sp.funnel3d() is the 3D twin of sp.funnel(): every one of the 9 funnel variants has a 3D form, selected with the same variant keyword and fed with the same stages. The funnel flows along the depth axis, from its widest stage at the back to its narrowest at the front, and every stage is a square section whose area is proportional to its value, so a stage worth 4% of the first one stays visible instead of vanishing. Tapered frusta, barrels, chevrons and split stages come from a shared tier strategy, so geometry is never hand-written per variant. Long inputs are pooled to a budget (max_points), so hundreds of thousands of stages stay interactive.
Variants
| Variant | Aliases | Uses | 3D form |
|---|---|---|---|
basic | default, trapezoid, classic | labels, values | Smooth tapered frusta: every stage narrows towards the next one along the flow. |
stepped | bar, rect, rectangle | labels, values | One straight slab per stage, like a staircase of tunnels. |
rounded | round, pill, smooth | labels, values | Barrel-shaped stages that bulge in the middle of each slab. |
chevron | arrow, pipeline, pointer | labels, values | Every stage is a wedge that narrows towards the flow, like a pipeline of arrows. |
pyramid | triangle, cone, point | labels, values | Sections shrink faster, following a pyramid profile that blends the values with a linear taper. |
inverted | inverse, reverse, upside_down | labels, values | The funnel turned around: the widest stage sits at the front and the narrowest at the back. |
conversion | dropoff, rate, steps | labels, values | Stages toned by their conversion rate from the previous stage, red for a heavy drop and green for a high rate. |
compare | multi, side_by_side, funnels | series, series_names, category_series | Several funnels side by side, each with its own stages (series and category_series). |
grouped | colored, by_color, shared_stages | labels, series, series_names | Stages shared by several series, split across the section and toned by series. |
Data
labels name the stages and values are their counts. Several series (with series_names) make a grouped funnel that shares the stages, and adding category_series (one list of stage names per series) draws side-by-side funnels that each have their own stages. Hovering a stage reads its value and its share of the first stage, for example Signups · 520 (52% of first).
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.