This post is the result of two things. First, taking part in the 2024 Du Bois Challenge reignited my passion for python data visualization. Second, I saw a creative data visualisation by Alli Torban (more on that later) that would be a fun to recreate in python.

In this post, I’ll share my approach at this recreation attempt.

The original: a data visualisation about Progressive Supranuclear Palsy

I like the work of Alli Torban. She applies data visualisation in creative ways. And not long ago, I saw one of her creations for the #30DayChartChallenge:

I’m someone who likes both creativity and minimalism, and this design strikes a nice balance between the two. So I reached out to her, asked if I could have a go at recreating it, got a yes, and put it on my list of ‘things to try’.

Breaking it down into elements

When I see a visualization like this one, I quickly start breaking it down into visual elements. These are the things that I need to recreate with code.

Technically, I view this as ‘a bar chart with some extras added’.

Let’s have a look at those:

If the Du Bois challenge has taught me one thing, it is to be creative and playful with the capabilities of a tool. So for this beautiful collection of visual elements I’m going to do just that.

The draft visualisation

When I start coding a visualisation, I aim to work towards a draft visualisation. This is the visualisation that technically is what the original is. And in this case, that is a bar chart.

In her post on linkedin, Alli Torban added the data source. With that, I looked up the data to make the draft visualisation and got to a first bar chart.

This is a very utilitarian visualization. Not that beautiful yet, but functionally it is what the original is.

I’ll add a few extras to this viz: the numbers at the bottom, some markers to keep them company, and the larger marker for the average value. And I’ll clean it up a bit.

Now when I swap the default dot markers for a custom one, you quickly get to see hints of Torban’s design idea:

Pretty cool right?

This is good moment to consider the added value of design for a data visualization. The viz you see above misses a few elements (e.g. some titles and labels), but it technically is a similar visualisation of the same data. By making certain choices (e.g. the use of custom attributes and what to use for titles), a designer has a lot of impact on the end result.

Implementing Alli Torban’s design

Alright, there are a few things I need to do now to get closer to Alli Torban’s design:

  • change the markers to custom ones (already done!)
  • change the colours
  • add the onset range line marker
  • apply custom fonts
  • add title and sources

Now when we do all that, we get to this visualisation:

It’s not a perfect match, but a pretty good recreation I think 🙂 and a good example of how a basic visualisation tool can benefit greatly from a good design idea.

The cool thing about recreating it in code, is that the visualization can be easily updated. This is also a good test to see if the code really works well with different datasets. When I rerun the code with some fictional new data, bot the visualization and the average age in the title are updated in a single click:

Pretty good!

Code it yourself

Want to have a look at the code? I have a python notebook that shows you how to make this viz. You can find it here.