Skip to content
all projects

~/project/climate.md

Climate Change, Visualized

Climate change, in 3D

Timeline
October - December 2025
Type
Side-Project
climatechangevisualized · preview

## overview

A 3D globe you can spin and move through time. Pick a dataset, drag the slider, and watch each country change colour month by month as land temperatures, CO₂ emissions, and sea levels change. You can also hit play and watch the whole thing animate.

## why-i-built-it

Why I built it

Everyone has seen a climate change chart. A line goes up, people nod, and then they forget about it. I wanted to see what it would feel like to put the numbers back on the planet, where you can find your own country and watch it change.

## what-it-does

What it does

It uses three public datasets: Berkeley Earth's land temperatures by country, Our World in Data's CO₂ emissions, and a global sea level dataset. A side panel shows the global numbers while you explore, like the average temperature for that month and how much sea levels have risen.

Land temperature by country, with the global numbers on the side.
Land temperature by country, with the global numbers on the side.

## 577-000-rows-in-the-browser

577,000 rows in the browser

The site has no backend. It's hosted on GitHub Pages, so everything happens in your browser. The temperature file alone is 22 MB and about 577,000 rows, one for every country and every month going back to the 1700s, plus 14 MB of CO₂ data.

I read each file once when the page loads and keep only the columns the globe needs. I also cut everything before 1880. Those early records only cover a few countries and come with huge uncertainty, so they made the map look emptier and less accurate, and they were a lot of extra rows to load.

It's still not as fast as it could be. Every time you move the slider, the app goes through all the rows to find that month. If I did it again, I'd group the rows by month once when the page loads, so each slider move is a single lookup.

## getting-countries-to-show-up

Getting countries to show up

The hardest part wasn't the 3D. It was country names. The temperature dataset says "United States" but the map says "United States of America." One says "Burma" and the other says "Myanmar." Every mismatch meant a country stayed grey with no data. I wrote a table for each dataset that matches its country names to the ones the map uses.

The CO₂ data had the opposite problem. It also has rows for regions like "World," "Africa," and "Europe (excl. EU-27)," and some of those were being drawn over real countries. So I added a list of regions to skip. None of this is exciting code, but without it the map only looked finished.

## adding-context

Adding context

Once the globe worked, I kept thinking about the next question someone would have, which is "okay, so what can we do about it?" So I added an insights panel that explains what you're looking at, what drives emissions (population, wealth, energy use, and how clean that energy is), and what helps slow it down. On mobile, the menu and insights hide behind buttons so the globe gets the whole screen.

CO₂ emissions per person, with the insights panel on the right.
CO₂ emissions per person, with the insights panel on the right.

## what-s-next

What's next

Sea level is still just a number in the side panel. I'd like to show it on the oceans too. I'd also clean the data ahead of time, so the page loads a small file instead of the full datasets.

## key-learnings

What I learned

  1. 01

    Most of data visualization is cleaning data. The pretty part is maybe the last 20%.

  2. 02

    Bad data doesn't throw errors. It just leaves a country grey or paints the wrong colour, so you have to go looking for it.

  3. 03

    A visualization keeps people around when it answers the next question they have.

## built-with

Frontend

  • React
  • Vite
  • Tailwind CSS

3D & maps

  • react-globe.gl
  • Three.js
  • TopoJSON

Data

  • Berkeley Earth
  • Our World in Data
  • Sea level rise (Kaggle)

## next-project

nwPlus.io

The club behind Western Canada's largest hackathons

read the write-up