One dataset, four classifications, four different maps. This is the most consequential choice
in a choropleth and the one most often left to a default, so the breaks are always printed in
the legend rather than hidden: a reader can see where the lines were drawn. The distribution
here is deliberately skewed, which is what real data looks like and what pulls the methods
apart. When you change the class count, fills tween to their new class
(chart.animations sets the pace), so the areas that switched sides are the ones
you see move.
quantile · equal counts per classjenks · minimises within-class varianceequalInterval · equal value rangesthreshold · breaks you chose yourself
Quantile is the default because every class is populated, so no part of the
legend is decoration. It flatters skewed data by construction, which is a trade, not a free
win. Jenks finds the breaks the data itself suggests and is the honest choice
when clusters matter, at more compute. Equal interval is the only one whose
legend is arithmetic a reader can do in their head, and on skewed data it leaves classes empty.
Threshold is for when the breaks are the point: a statutory limit, a target, a
zero crossing. A continuous linear, log or sqrt scale
skips classing altogether and draws a gradient legend.
scale: { type: 'quantile', classes: 5 }
scale: { type: 'jenks', classes: 5 }
scale: { type: 'equalInterval', classes: 5 }
scale: { type: 'threshold', breaks: [5, 25, 100, 400], palette: 'reds' }
scale: { type: 'log' } // continuous, gradient legend