This entry is part of the Chart Index, the reference library for the Chart Design Field Guide.

A hexbin map replaces the irregular polygons of a choropleth with a uniform grid of hexagons. The form solves the choropleth's two structural problems: irregular regions distort visual weight (a large rural county dominates a small urban one), and overplotting destroys raw scatter plots of points. Hexagonal binning is a clean solution to both — every cell is the same size and shape, and millions of points become a smooth coloured surface.

H3 is Uber's open-source hexagonal hierarchical spatial index — a global hexagonal grid that snaps to standardised resolutions. It has become the default for ride-share, logistics, and urban analytics because the cells nest hierarchically and the grid covers the world consistently.

What it is

A hexbin map divides space into a regular grid of hexagons and aggregates points (or values) within each hexagon. Each hexagonal cell is shaded by a quantitative variable: a count of points, a density, an average, a rate. The result reads like a heatmap projected onto a plane, with cells of uniform size that the eye compares directly. The plane can be a map projection — H3 cells over a city — or any two measured axes; the binning is the same.

The hero chart above bins about nine hundred ride-share pickups across Sydney on a kilometre grid centred on the CBD. The darkest cells are the city centre; the smaller dark cluster to the south is the airport, the one to the west is Parramatta, and the pale scatter between them is the suburbs. Randomise the trips and they drift a little, so cells at the edge of each cluster flicker between classes while the cores hold — the surface is robust to noise in a way that a scatter of the same points is not.

When to use it

Hexbin and H3 maps are the right choice when:

  • You have point-density data that overplots on a scatter map.
  • You want uniform spatial resolution to avoid the choropleth's region-size bias.
  • The reader's question is "where is activity concentrated, and at what intensity?"
  • The dataset is large (thousands of points and up) — small datasets do not benefit from binning.
  • The application is logistics, urban analytics, or geo-spatial operations where consistent cell sizes matter.

When not to use it

  • Few points. A hexbin of 100 points produces mostly-empty cells. Show the points directly.
  • Sparse, unevenly-distributed data. Many empty cells make the grid look like noise. Use a scatter or a choropleth.
  • When boundaries matter. Hexagons cross political and administrative boundaries; for income by county you need the county shapes.
  • Audiences expecting geographic boundaries. A reader who expects to see their suburb may find a hex grid abstract and unfamiliar.

Design principles

Bin when the points overplot

A scatter plot is honest about every observation and useless once the observations pile up. Nine hundred pickups is already enough to turn the city centre into a single blot; nine hundred thousand would be a black disc. Binning trades the individual point for a count, and the count is what the question was about.

As a scatter: nine hundred pickups, one dot each
The CBD is a solid blot — there could be three hundred trips in it or three thousand, and the plot looks the same. The airport and Parramatta clusters are visible but their relative weight is not.
As a hexbin: the same pickups, binned
Each cell is shaded by how many trips fall in it. The CBD is now graded — a dark core, a lighter ring — and the eye can compare it with the airport and Parramatta directly, cell against cell.

Choose resolution to match the question

H3 resolutions range from 0 (continent-sized cells) to 15 (square-metre cells). Pick a resolution where your data populates most cells without smoothing away the spatial pattern. Too coarse and the chart is uninformative; too fine and the chart is sparse. There is no neutral choice — the two figures below are the same trips at two radii, and they make two different claims.

Too fine: 6 px cells
Most cells hold one or two trips, so the surface breaks into speckle and the ramp spends its darkest classes on a handful of lucky cells. The CBD reads as a scatter again, only with hexagons instead of dots.
Too coarse: 28 px cells
Now the CBD, Bondi and the inner west share a cell or two, the airport merges into the southern edge of the city, and the structure that made the hero chart useful has been averaged away. The map says only that Sydney is in the middle.

Say what the cell colour means

A hexbin shaded by count answers where are the trips? The same cells can just as easily be shaded by a sum, an average or a rate — and the map changes its argument without changing its shape. State the aggregate in the title or subtitle every time; a reader who assumes count when the cells show revenue will draw the wrong conclusion from a correct chart.

Shaded by total fare rather than trip count
The same pickups, each carrying its fare, with cells coloured by the sum. Parramatta and the airport now outrank the CBD — fewer trips, but long ones, and the airport adds a surcharge. Same grid, same trips, a different map.

Use a perceptually uniform palette

Same rule as for choropleths: sequential viridis or single-hue ramp, perceptually uniform. The hex grid is dense; a non-uniform palette will produce visual cliffs that are not in the data. The teal ramp in this entry has seven stops spaced evenly in lightness, so a cell one class darker than its neighbour looks one step darker, not three.

Show empty cells when they matter

If a cell is empty because no data, show it as the lightest cell colour or as a faint outline. If a cell is empty because that area is not in scope (water, foreign territory), omit it. The distinction is meaningful and worth designing for. The figures here omit empty cells, which is right for a city on a harbour — an empty hexagon over Port Jackson would imply a road.

Label the grid resolution

State the H3 resolution (or hex side length) in the subtitle. A reader needs to know whether a cell represents 100 metres or 10 kilometres. Without that, the chart's spatial meaning is ambiguous.

Provide a scale bar and north arrow

A hex grid without geographic anchors floats in space. A small scale bar (showing kilometres per cell), a north arrow, and a coarse base map outline ground the chart in reality. On a plain x/y plane, as here, the axes do the same job — but only if they are titled in real units.

Consider the cell-edge artifact

At hexagon edges, point membership becomes ambiguous (a point exactly on the boundary). For dense data this is invisible; for sparse data it can produce visual noise. Smoothing (bilinear or KDE-like interpolation) can help but adds opacity to the form's claim of each cell is a discrete bin.

Anatomy

The composition of a hexbin map
An anatomical guide

A hexbin map's anatomy is a regular hex grid + colour scale + axes or a scale bar. The form removes the choropleth's region-size bias and produces a clean density surface; every design decision that matters — radius, aggregate, palette — is invisible in the finished chart, which is exactly why the subtitle must state them.

  • Choropleth — for region-based shading on irregular polygons.
  • Density / KDE map — smoothed continuous surface instead of binned cells.
  • Scatter plot — the unbinned form; right until the points overplot.
  • Table heatmap — the same idea on a square grid of categories.
  • Dot-density map — for raw count display without binning.
  • Cartogram — region areas distorted by value; different solution to the same problem.

Reading list

  • Carr, D., Littlefield, R., Nicholson, W. & Littlefield, J. (1987). Scatterplot Matrix Techniques for Large N. The paper that introduced hexagonal binning.
  • Brewer, C. & Pickle, L. (2002). Evaluation of Methods for Classifying Epidemiological Data on Choropleth Maps. The general case for uniform binning.
  • Uber Engineering (2018). H3: Uber's Hexagonal Hierarchical Spatial Index. The H3 spec and implementation.