A bivariate map shades every tile by two things at once. Using residential building volume vs. total population in New York City, here is how to read the colours, the units, and the classification choices - in plain language.
Most maps colour each spot by a single thing — population, say, or how built-up it is. A bivariate map is cleverer: it shades every tile by two things at the same time, so you can see how they line up across a whole city in one glance.
In MapBees you turn this on with the Bivariate tab at the top of the map. You pick a metric (or a few, added together) for the left-to-right direction (the X axis) and another for the up-and-down direction (the Y axis) — and every tile gets a colour that says where it sits on both at once.
A real bivariate map of New York City. X = residential building volume (m³), Y = total population. Each tile's colour blends where it falls on both metrics.
Our example: buildings vs. people in New York
The screenshots use New York City with two everyday questions stacked together:
XResidential building volume (the left-to-right axis) — how much housing is actually built on that patch of land, measured in cubic metres (m³).
YTotal population (the up-and-down axis) — how many people are counted as living there.
Put together, the map answers a much richer question than either could alone: where are there lots of homes and lots of people, where are there big buildings but few residents, and where do people live without much built housing around them?
An axis doesn't have to be just one metric
Each picker opens as a searchable tree — the same group-and-category layout used throughout MapBees — instead of one long dropdown. Type to filter, or expand a section (Building volume, Points of interest, Population & age, Affluence, Accessibility) and drill into a category to find the exact leaf you want.
The difference from before: every row is a checkbox, not a single choice. Tick more than one leaf and MapBees adds their per-tile values together before ranking that axis — so “Residential building” and “Outbuilding” (both measured in m³) can become one combined Built volume axis without leaving the picker.
Find it fast
Start typing in the picker and matching groups and categories expand automatically — no need to remember which section a metric lives in.
Stack same-unit metrics
Check as many leaves as you like as long as they share a unit. The trigger shows “N metrics summed” and the map re-renders using the combined total.
This is different from the cross-axis unit note below. Summing is within one axis, so those metrics genuinely need to match — MapBees greys out (and explains) any leaf that would mix units, like adding a head-count to a cubic-metre figure. Mixing units is only ever safe between X and Y, never inside a single axis' sum.
“But one is m³ and the other is a head-count!”
You may have noticed the two metrics use completely different units — cubic metres of building versus a plain count of people. MapBees even pops up a gentle note about it. That is fine, and here is why.
A bivariate map never compares the two numbers against each other. It compares each tile against all the other tiles on the same axis. The X axis is ranked only against other X values, and the Y axis only against other Y values. So “a lot of building” and “a lot of people” are each judged on their own scale — the units never touch.
The pattern you see is always valid even with mismatched units. The only thing to do is read the raw numbers in a tile's pop-up with a little care — don't mentally subtract “200 people” from “243,000 m³,” because they measure different things.
Reading the colour: the 3×3 key
The little colour square in the bottom corner of the map is your decoder. It is a 3×3 grid — three steps for X (Low, Medium, High) crossed with three steps for Y (Low, Medium, High), giving nine possible colours.
Read it like a chart you learned in school: move right for more on the X metric (more residential building), and move up for more on the Y metric (more people). The corner where both are highest gets the deepest, darkest colour — that is the simple rule: darker means both are high at once.
Total (people) — more →
Low
/ High
Med
/ High
both
high
Low
/ Med
Med
/ Med
High
/ Med
Low
/ Low
Med
/ Low
High
/ Low
Residential (m³) — more →
The 3×3 key. Move right = more residential building; move up = more people. The darkest bottom corner is where both are high at once.
So a pale tile is “low on both.” A strongly teal tile is “lots of building, but not many people.” A strongly magenta tile is “lots of people, but not much built housing.” And the dark corner is “packed with both.” Once you internalise the corners, you can read the whole city without thinking.
Hover any tile to see the exact numbers
Colours give you the big picture; the pop-up gives you the receipts. Hover (or tap) a tile and MapBees tells you which of the nine combinations it belongs to, plus the real value behind each axis.
Hovering a tile in NYC: this one is 'Low Residential · High Total' — low residential building volume but high population for that area.
Notice the read-out names the band (“Low,” “High”) and the raw value beside it. The highlighted square in the key shows exactly which of the nine cells you are on. You can also hover a cell in the key to light up every matching tile on the map — a fast way to ask “show me everywhere that's high-building, low-people.”
Picking a colour scheme
The relationship is the same no matter which palette you choose — the colours are purely about readability and taste. MapBees ships four hand-tuned schemes (Teal · Magenta, Blue · Pink, Green · Purple, Orange · Blue). Each one keeps the same logic: one colour family leans toward the X metric, another toward the Y, and they blend toward a dark corner where both are high.
Pick whichever you can read most comfortably — on a dark map, on a bright day, or for colour-vision needs. Switching palettes is instant and changes nothing about the data underneath.
Where do the Low / Medium / High lines go?
Here is the one genuinely important choice on the panel: Classification. To turn thousands of different values into just three bands, MapBees has to draw two cut lines — one between Low and Medium, one between Medium and High. Where it draws those lines changes which tiles look high or low.
That is not a trick or a bias — it is a real decision every map-maker faces, and there is no single “correct” answer. So MapBees gives you three well-known methods and lets you switch between them live. None of them re-fetches data; they just re-draw the cut lines.
Quantile
Equal number of tiles in each band.
How it works. MapBees sorts every tile from lowest to highest, then splits the list into three equal-sized piles. The bottom third is “Low,” the middle third is “Medium,” the top third is “High.”
How it feels. Always shows a full spread of colour, even when most tiles are bunched together. Great for spotting the relative top and bottom of a city.
Best for. Skewed, lopsided data (most things are small, a few are huge) — like building volume.
Equal interval
Equal value range in each band.
How it works. MapBees takes the smallest and largest value and chops the gap between them into three equal-width slices — for example 0–100, 100–200, 200–300 — regardless of how many tiles land in each.
How it feels. Honest about real magnitude, but if one tile is a giant outlier, almost everything can fall into the bottom slice and the map looks flat.
Best for. Evenly spread data, or when the actual size of the gap between values matters.
Natural (Jenks)
Bands follow the natural gaps in the data.
How it works. Uses the Jenks natural-breaks method: it hunts for the spots where the data has real gaps and draws the cut lines there, so each band holds values that are genuinely similar to each other.
How it feels. Usually the most “true to the data” look — clusters that belong together stay together, and the breaks land where nature already put them.
Best for. Data that forms clear clumps, when you want the map to reflect real groupings.
A closer look at “Natural” (Jenks natural breaks)
“Natural” is worth a sentence more because it is the most thoughtful of the three. It uses an algorithm called Jenks natural breaks, named after the cartographer George Jenks. The idea is intuitive: real-world data usually clumps, and you want the bands to fall in the empty gaps between clumps rather than slicing straight through a tight cluster.
Imagine plotting every tile's value on a number line. You would see little crowds of dots with gaps between them. Jenks mathematically finds the cut points that keep each crowd as tightly together as possible while making the crowds as different from each other as possible. The result is bands that match how the data actually groups in the real world — which is why it so often “looks right.”
Quantile guarantees an even spread of colour, Equal interval respects raw magnitude, and Natural respects the data's own shape. Flip between them and watch the map — if the big picture barely changes, your pattern is robust. If it changes a lot, it means a few tiles sit right on a boundary, which is itself useful to know.
Which one should you pick?
A simple rule of thumb, no statistics required:
Just exploring and want to see the strongest and weakest areas? Start with Quantile — it always fills the map with contrast.
Care about the true size of the gap between places (e.g. one area has twice the housing of another)? Use Equal interval.
Want the map to honour the natural clusters in the city? Use Natural (Jenks).
The honest best practice is to try all three. They are one click apart, and the way the map shifts (or doesn't) tells you how solid your story is.
The whole idea, in five lines
A bivariate map colours every tile by two metrics at once — X goes left-to-right, Y goes bottom-to-top.
Each axis can be more than one metric: check several same-unit leaves in the picker and MapBees sums them into one axis value.
Mismatched units are fine between X and Y — each axis is ranked on its own, so m³ and head-counts never get compared directly. Within one axis's sum, units must match.
Darker corner = both high. Hover a tile or a key cell to see exact numbers and isolate a combination.
Classification (Quantile, Equal, Natural/Jenks) decides where the Low/Medium/High lines fall — switch live to test how solid the pattern is.
Quick questions
What is a bivariate map?
A bivariate map colours every tile by two metrics at the same time - one running left-to-right (X) and one running bottom-to-top (Y) - so you can see how the two relate across a whole area in one glance.
Does it matter that the two variables use different units?
No. Each axis is ranked only against other values on the same axis, so cubic metres of building and a count of people are never compared directly. The pattern stays valid; just read the raw numbers in a tile's pop-up with care.
How do I read the bivariate colour key?
It is a 3x3 grid: move right for more of the X metric and up for more of the Y metric. Paler tiles are low on both, and the darkest corner means both metrics are high at once.
What is the difference between Quantile, Equal, and Natural classification?
Quantile puts an equal number of tiles in each band, Equal interval makes each band cover an equal value range, and Natural (Jenks) places the band edges in the natural gaps of the data so similar values stay grouped together.
What are Jenks natural breaks?
Jenks natural breaks is a classification method that finds the cut points keeping each band's values as similar as possible while making the bands as different from each other as possible - so the colours match how the data actually clusters.
See it on a real map
The best way to understand the score is to play with it. The full app is on a free tier, with no sales call.
Builds MapBees's location-intelligence pipeline end to end — census and Overture Maps ingestion, H3 hex scoring, and the map interface — and writes the methodology behind every number on the site.