The right tool for the job
Just a few words on my personal favourites - also, Kowloon Walled City & soccer passes
Between visualisations, lines of code, or pieces of writing, almost everything that I create professionally is intangible. That wasn’t always the case though. I used to be a mechanical engineer back in the day, having worked on things like bridges, tall buildings and even (briefly) race cars.
While I’m now only a recovering engineer, the training never really leaves you. One of my most vivid memories from first-year engineering classes was being shown a tool board like this one.
We were told that there exists a huge array of available tools, that there is almost always a right tool for the job (and a wrong one), and that using the wrong tools will make the job much, much more difficult.
It’s so obvious, but the message does hit home when you’re looking at multiple walls full of tools as well as some floor-standing tools.
This is also true in data visualisation. As the field grew exponentially over the last decade or so, data visualisation tools have proliferated accordingly. Take a look at this list of libraries, sorted by API design and abstraction level.
And that’s just those for web-based visualisation, before we start to include packages for Pythonistas (Matplotlib/Plotly/Bokeh), R users (ggplot2), non-programmer desktop users (Tableau/PowerBI) etc.
Finding the right tool in this pile is a tall task. It is doubly so when the tools are mostly less than a few years old and there’s scant information on most of them!
If you’ve read my work, you probably know that Plotly is my usual go-to package for data visualisation, which lets me produce all sorts of custom graphs and create web apps.
But I have been adding a few other tools to my toolkit, and it’s really helped me with certain jobs. So I thought that I would talk here a little bit about my personal favourite tools at the either end of the spectrum.
DataWrapper
Good for: Producing beautiful, production-ready charts in no time at all
Not good for: Anything different from their template
DataWrapper is in my humble opinion the best available tool if you want to go from data to chart in the shortest time possible. I turn up it quite a bit, and here are some that I’ve created earlier.
These charts more were created in probably about 10-20 minutes from soup to nuts. DataWrapper’s charts are also interactive to begin with - no further work required to set up any interactivity (see the first chart and the second chart).
DataWrapper’s styling language is so unique and unmissable to an extent that you might even recognise the style from many charts by journalism outlets.
And that’s possibly also its biggest limitation.
DataWrapper is basically the mad libs equivalent of visualisation, where the user is allowed to fill in the blanks, and only the blanks. While you might be able to deviate a little from the script, you are bound by the structure and premise of the framework.
So let’s switch gears to look at the other end of the scale - which is D3.
D3
Good for: Producing basically anything you want, where data drives your visualisation
Not good for: Those of us in a hurry
This is a draft of something that I created for a client last week. It visualises Team A’s win/loss record based on their position on the standings (ladder), the opponent’s position, and whether the game was played at home or away.
(Unfortunately Team A is not very good.)
I built this using D3, with data from FBref.com. I’ve been trying to teach myself D3 on and off for the last few months because it allows you to do things like this - to create custom visualisations limited only by your imagination and data.
And unlike a pure graphic design package, D3 binds data to the visualisation, such that changing data correspondingly moves the constituent components - like so:
With only a few changes from the first chart, I produced this where the wins & losses are combined into one group. The main visual difference comes from the change in data - owing to the team’s slightly more respectable position in the standings.
That’s wonderful; except - did I mention how I’ve been teaching myself D3 on-and-off over the last few months? It’s probably actually close to a year, actually. It’s been a bit of a slog. Not being a front-end developer, any JavaScript (which D3 is built on) makes me feel as though I’m an intern at Bletchley Park looking at outputs from the Enigma machine.
Python makes sense to me, while JavaScript just feels… arbitrary. I am definitely not the fastest to pick up things like this, so your mileage may vary, but a quick google search result about “D3 learning curve” suggests I’m not alone.
But D3 is just so powerful and flexible that I couldn't quit it, and I’m glad that I didn’t.
What are your favourites?
These two are at the extremes of available toolkits.
One maximises convenience and usability and the other customisability and abstraction. And I’m glad that I took the time to find DataWrapper (it doesn’t seem to be that well known), and that I am taking the time to learn D3, even though I feel a bit like a toddler with a supercomputer.
I hope that was interesting. And I’d love to know - what’re your personal favourite tools for DataViz? Let me know!
Eye-catchers
City-sketcher
Hong Kong used to have this area called Kowloon Walled City where 50,000 people lived in an area a third the size of Staples Center. This graphic and an earlier sketch is a remarkable illustration of life in the city. It’s not dataviz per se, but it contains many elements of it and it’s stunning.
Visualising sample size effects
This animation is a) very cool and also b) visually captures what happens when you have a large enough sample size for a pattern to reveal itself.
That’s it from me today. I know these conversations of ours have been a little sparse. That’s on me! It’s been a pretty hectic month or so with some personal stuff and freelance work. Going forward, I will aim to stick to a fortnightly schedule.
Also, a happy Lunar New Year to those who celebrate it! With the year that’s been I’m pretty keen to celebrate anything to be honest 😉.
If you liked the post, you can share it here: