Mexico Cartogram
Land area distorted by population. INEGI Census 2020 + Marco Geoestadistico 2025.
What the cartogram reveals
The massive central bulge is where Mexico's gravity lives: Ciudad de Mexico, Estado de Mexico, Puebla, and Guadalajara. On a standard map, these states look like they share the country equally with Chihuahua and Durango. On the cartogram, they ARE Mexico. The central highlands contain more people than the entire north combined.
Monterrey stands out clearly in the northeast, the industrial capital of northern Mexico. Tijuana and Mexicali swell out of Baja California, revealing the border economy that a standard map hides behind the peninsula's long, thin shape. The Yucatan holds its form because Merida and Cancun carry real population weight. And the vast deserts of Chihuahua, Durango, and Sonora? Compressed to thin strips, because almost nobody lives there.
Why this matters
A standard map of Mexico allocates visual weight by land area. Chihuahua dominates the north. But Chihuahua has 3.7 million people. Estado de Mexico has 17 million. On a normal map, they look roughly equal. A cartogram corrects this by making area proportional to population: what the eye sees matches where the people actually are.
Every policy debate, every resource allocation, every electoral analysis that uses a standard map is starting from a distortion. Land doesn't vote. Land doesn't need hospitals. Land doesn't experience poverty. People do. A cartogram replaces geographic bias with demographic truth.
At the municipio level, the distortion is even more revealing. Within each state, population concentrates in a few urban centers while vast rural territories hold very few people. Toggle between "Normal" and "Cartogram" to see how dramatically the country reshapes when you measure by people instead of land.
How it was built
I built this cartogram with the help of AI in a single session. The boundaries come from INEGI's Marco Geoestadistico 2025 (2,476 municipios). The population data comes from the Census 2020 (126 million people). I used the Gastner-Newman density-equalizing algorithm, computed in Python with 30 iterations and 1.15% average error. The rendering is D3.js, running entirely in your browser. The whole site runs on AWS S3 and CloudFront for $0.51/month. No backend, no API, no server.
Source code on GitHub. Data: INEGI Marco Geoestadistico 2025, Census 2020. Algorithm: Gastner-Newman density-equalizing cartogram.