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

Choropleth Map 3D

Signature

sp.choropleth3d(title, labels=None, values=None, secondary_values=None, *, map="world", region="", bins=5, variant="sequential", orientation3d="iso", scene="default", theme="none", zone=None, max_points=None, bg_color="#1a1a2e", width=1200, height=600, x_label="", y_label="", z_label="", **kwargs) -> Chart

Aliases: sp.build_choropleth3d_chart(), sp.choropleth_3d(), sp.choropleth3d_chart(), sp.geo_map3d().

Description

sp.choropleth3d() is the 3D twin of sp.choropleth(): all 8 choropleth variants share the same 3D form, selected with the same variant keyword and fed with the same values. A literal country outline has no honest cuboid interior, so every matched region instead gets a column at its own geographic centroid, height following its value, ringed by a thin trace of its real coastline (for a region set small enough to trace legibly). daynight is the one exception: it carries no per-region data at all, so it draws the day/night terminator as a curved trace plus a sun marker at the subsolar point instead.

Variants

VariantAliasesUses3D form
sequentialbasic, default, heatlabels, valuesOne column per matched region at its centroid, height and tone following its value.
binnedquantile, classed, stepslabels, valuesThe same columns, height and tone stepped into discrete bins instead of a continuous ramp.
divergingdelta, change, rdbulabels, valuesColumns rise above the floor for a positive value and sink below it for a negative one.
orthographicglobe, sphere, spacelabels, valuesThe same columns as sequential; the 2D globe-look projection has no separate 3D form.
polarazimuthal, polelabels, valuesThe same columns as sequential; the 2D polar projection has no separate 3D form.
bivariatetwo_variable, cross, duallabels, values, secondary_valuesThe same columns, toned by secondary_values instead of values.
dot_densitydots, stipple, scatter_filllabels, valuesThe same columns as sequential; the 2D chart’s random dot-fill has no separate 3D form.
daynightday_night, terminator, solar``No per-region columns at all: a curved terminator trace plus a sun marker at the subsolar point.

Data

labels names each region (ISO codes or full names, matched against the map region set), values sets its column height and secondary_values feeds bivariate’s second channel.

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.