← All projects
Data Visualisation 2026 R · ggplot2

30 Days of Charts

Every April, the data visualisation community takes on the #30DayChartChallenge — one chart a day for 30 days, each following a different prompt. For me it was less a competition and more a daily ritual: sit down, find a dataset, make something worth looking at, and move on.

I decided to give myself a personal thread: all 30 charts on the theme of education. From global literacy rates to gender gaps in academia, from PISA scores to the brain trade between countries — one month of asking what education data actually looks like when you push it into unfamiliar shapes.

I completed all 30 days. Some charts I'm proud of. Some I'd redo entirely. All of them taught me something.

I shared each one on LinkedIn as I went. Gained new followers — but more importantly, made some genuinely interesting new connections along the way.


The charts I'd make again.

Day 5 — The Spiral of Schooling
Day 05

The Spiral of Schooling

Each spiral is a country. Its length tells you how many years children spend in full-time education — from just over 1 in some parts of the world, to 14 in others. The colours reflect the continent. When you look at it, you can't read the data — you sense the disparity. Some spirals are tight and small, barely getting started. Others unwind freely, taking up more space, going further. That gap — between a childhood spent in a classroom and one that isn't — is what this piece is about.

Day 14 — The Brain Trade
Day 14

The Brain Trade

Not the clearest chart I made this month. Not my favourite either. And yet — 250,000 impressions on LinkedIn. The algorithm decided this one deserved to travel, and I still have no idea why. It maps the flow of tertiary students across the EU — where they leave from, where they land. Germany sends the most. France plays a very different role. The European Higher Education Area is shared, but not evenly. Maybe that asymmetry is what caught people. Or maybe the LinkedIn algorithm is just a mystery, and I should stop trying to understand it.

Day 19 — Enrollment
Day 19

EU Higher Education Enrolment 2000–2024

Each small chart shows one country in focus — yellow against the EU context in grey. A steady rise almost everywhere, with strong acceleration in countries like Cyprus and Greece, more stable trajectories in others. Different speeds, same direction. Education expansion is not uniform — but it is widespread. I'm also quietly pleased that with 27 small multiples on one page, it stays readable. That's harder than it looks.

Day 23 — Women Leaving Research
Day 23

Women Leaving Research

Every life has seasons. In education, women flourish — outnumbering men all the way through Master's level. Then comes scientific research, where the balance flips. And if they have a baby? 1 in 3 women leaves research entirely. The faded squares aren't just data points — they're careers we lost. Data from Denmark, one of the most family-friendly countries in the world. Which makes the numbers harder to look away from, not easier.

Day 27 — PISA Voronoi
Day 27

PISA Voronoi

PISA reading scores animated across 20+ years — each cell a country, green for above the OECD average, orange for below, fading to near-invisible the closer to the mean. Is it the most readable chart I made this month? No. But it was the most fun. Uncertainty isn't just in the data — it's in the way you choose to map it.


What I learned

01
Feeling over legibility

I'm usually over-careful about clarity — every label placed, every axis explained. This challenge gave me permission to loosen that. Some charts I made for feeling more than for data rules: you can't read every value, but you sense the magnitude instantly.

02
New chart types every day

Voronoi maps, spiral charts, radial layouts — chart types I'd been avoiding because they're often not readable. I decided to try the most unusual ones I could find. Most worked. A few didn't. I'm glad I gave them a try.

03
Constraints are a gift

I wanted to reach 30 charts — and I did. A daily prompt with a fixed deadline removes the paralysis of too many options. Committing to education as a theme helped even more — half the decision was already made. Many of them could be improved, but the time constraint forced me to post even the ones I'm not fully happy with. Turns out that's also a useful skill.

04
ggplot2 can do almost anything

I used to reach for other tools when things got complex. After this challenge I'm convinced that with enough patience — and a little help from an AI — ggplot2 handles almost everything.

05
One dataset, many stories

Last time I tried this challenge, I burned half my energy hunting for a fresh dataset every single day. This time I gave myself permission to reuse the same data across multiple days — and it was liberating. The same numbers look completely different in a spiral, a slope chart, or a small multiple.

06
Next time: set a time limit

Some days I spent far too long chasing a perfect chart when a good one would have served the data just as well — especially on titles and their placement. Next edition: a hard stop at two hours. Perfection is the enemy of thirty.


All 30 entries

Hover over any chart to see the day and title.