Good Country Index
2025-06-15
The Good Country Index ranks countries across 7 dimensions measuring their contributions to the common good: science and technology, culture, international peace, world order, planet and climate, prosperity and equality, health and wellbeing. Each dimension has 5 sub-indicators, so the full dataset is 35 metrics per country across 170+ nations. The visualization challenge was making that complexity scannable without dumbing it down.
Radar charts were the obvious first attempt, and they failed immediately. They look impressive in presentations but they're terrible for comparison. The area encoding is misleading because the visual size depends on the order of axes, not the data. Rotating the same values produces a different-looking shape, which means the visual impression is arbitrary. Worse, comparing two countries requires overlaying two radar charts, and the human eye is bad at comparing irregular polygon areas. I abandoned radar charts after the first prototype and switched to a ranked bar approach where each dimension gets a horizontal bar showing the country's rank relative to all others.
The D3.js implementation handles the hierarchical nature of the data. Each dimension expands to show its 5 sub-indicators, and the expand/collapse interaction lets users drill into the detail without overwhelming the default view. The key design decision was making rank position, not score, the primary visual encoding. Raw scores are meaningless to most people. Knowing a country ranks 12th out of 170 in science and technology communicates scale instantly. The bar width maps to percentile rank, so a full bar means first place and a sliver means last.
The hardest interaction to get right was comparison mode. Selecting two countries highlights their ranks side by side across all 7 dimensions, with the difference shown as a gap between bars. Color indicates which country leads in each dimension. The constraint was keeping the comparison readable on mobile where horizontal space is limited. I ended up stacking the two countries vertically within each dimension rather than placing them side by side, which sacrificed some visual immediacy but worked at every screen width. The design principle I kept returning to: visualization should answer a question faster than reading a table would. If the chart doesn't beat the table, the chart is wrong.