50 shades of dataviz frustration
About 15 years ago, I did my first internship: working at a research institute that manages a genetic collection of banana trees. My job was to tidy up some very, very messy datasets and make a few graphs out of them.
I did not know it was the very beginning of a life of dataviz frustration.
No code = argh!
The tool I used was... Excel! And I loved it.
Excel is genuinely powerful. But I quickly hit its limits for dataviz: bad defaults, little room for customisation, and zero reproducibility.
I'm pretty sure I built a bunch of graphs like this!
Next, I moved to Adelaide, Australia, for another academic internship. One day, my supervisor did something that blew my mind.
Code for viz
He took my Excel sheet, loaded it into R, typed a few lines of code, and produced a graph with a linear regression on top. A bit like this.😳
On top of the crazy stats done automatically, I understood he could run this script on 1000 files in 23 seconds.
That was a turning point in my career. It sparked a curiosity for programming and dataviz that has never left me since.
So as a first real job I worked as a bioinformatician on the wheat genome, programming for real in Python and R. I made dozens of graphs, and it was suuuuch a pain. ggplot2 wasn't really a thing yet, and good information was hard to find. That's when I started the R Graph Gallery to help people feeling the same pain.
Then ggplot2 took off, with a syntax that was much easier to digest! The R community started to build crazy graphs. You can check a few in the gallery.
But a new problem showed up: interactivity. I wanted buttons to play with my data, tooltips to dig deeper, and so on.
Interactivity please!
Along came what looked like the perfect solution: Shiny, a tool to build small data apps in R. I spent so much time learning it, wrestling with reactivity and performance.
Here is the very first app I created. You really, really don't want to know how many nights of my life I spent on it.
And once again, frustration: everything I built was painfully slow, with questionable design and flickering charts.
D3 = hardcore
Then, thanks to all my open source and educational projects, I landed a dream job back in Australia.
I was paid to build interactive web pages that explained the lab's research to a wider audience. I started with Shiny, but I basically ended up getting paid to learn D3.js.
Check the jump in quality between a Shiny and a D3 project!
For instance, this kind of interaction is possible only with D3.
But then a new frustration crept in: how am I supposed to manage thousands of lines of code for a single chart? How do I avoid spending three hours building a simple button? And why am I copy-pasting so much code?
The AI era
AI is shaking up pretty much every field, and data visualization is no exception. Today, with a little knowledge and the right setup, you can build any chart you can dream of using nothing but natural language.
The revolution is already well underway: I recently judged a dataviz competition, and almost every entry was built with this tech stack.
If you're curious what it looks like to use React, D3.js, shadcn/ui, GitHub, Claude and a few other tools to build a nice chart live, check out my live demo!
Before you go
What's the technical thing that annoys or limits you most when you're building a chart at work? Even a two-word answer would be awesome, so drop me an email!
Best,
Yan
Enjoyed this?
Get one short, actionable dataviz tip every Saturday. Join 19,000+ data people.