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

Bullet Chart 3D

Signature

sp.bullet3d(title, labels=None, values=None, *, variant="basic", targets=None, max_vals=None, ranges=None, comparisons=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_bullet3d_chart(), sp.bullet_3d(), sp.bullet3d_chart(), sp.bullet3d_family(), sp.bullets3d().

Description

sp.bullet3d() is the 3D twin of sp.bullet(): every one of the 8 bullet variants has a 3D form, selected with the same variant keyword and fed with the same labels, values and optional targets, max_vals, ranges and comparisons. Every row is scaled to a percentage of its own maximum, so rows with different units share the height axis: qualitative bands stand behind as a wall, the measure is a bar in front and the target is a flat plate at its level. Bands, bars, beads and marks come from a shared layered bullet strategy, 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

VariantAliasesUses3D form
basicdefault, classic, standardlabels, values, targets, max_vals, rangesA dark range band up to ranges (75% by default) on a lighter track, the value as a bar in front and a plate at the target.
stackedstacked_ranges, zones, qualitativelabels, values, targets, max_valsThree graded qualitative bands (0-40%, 40-75%, 75-100%) stand behind the value bar.
thermothermometer, vertical, columnlabels, values, targets, max_valsA thermometer: a slim rail, a red tube rising from a bulb up to the value, and the target plate.
segmentedtraffic, rag, zones_colorlabels, values, targets, max_valsTraffic-light bands (red, amber, green) behind the value bar and the target plate.
minimalsparkline, clean, nakedlabels, values, targets, max_valsOnly the value bar and the target plate, with no background bands.
dotpoint, marker, piplabels, values, targets, max_valsThe value is a single bead on a track instead of a bar, beside the target plate.
progresspill, bar, percentlabels, values, max_valsA wide pill of progress filling the track up to the value, with no target.
comparevs, ghost, priorlabels, values, targets, max_vals, comparisonsThe value bar beside a ghost bar for the prior period (comparisons), plus the target plate.

Data

labels name the rows and values are the measures; targets draws the target plate, max_vals sets each row’s full scale (default: 120% of the largest of value, target and comparison), ranges sets where the range band ends and comparisons gives the prior value drawn by compare. Hovering a part reads its raw numbers, for example Revenue · 80 of 120.

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.