The Spawning Of The Tadpole Chart
During an unusually arduous commute home on Friday I caught a tweet from one of my favourite data viz people, Emma Cosh. For anyone unfamiliar, Emma runs the brilliant Tiny Tableau Talks initiative and is a Freelance Data Visualisation Consultant. She wrote:
I recently worked up this chart that shows a current value along with movement in that value vs. a previous time period. A little like a lighter touch dumbbell chart. Can my #dataviz or #tableau tweeps tell me if there is a name for it? If not, i shall call it a tadpole chart. pic.twitter.com/ufw51VNOzl
— Emma Cosh (@EGCosh) May 18, 2018
So, the circle represents the current year position along the axis, and the line represents the change in this year versus the previous year. The relative simplicity of this chart really pleased me, and it’s the sort of thing I have lots of regular use cases for. Immediately I could see some applications for it, and since I was sat on a train going nowhere, I dug out my trusty notebook to hand began to scribble.
It appeared so neat to show every item on a single horizontal line, but there is the risk that where any two lines overlapped you wouldn’t be able to read the length of one or more of them. Also, this would work really neatly for a small number of items but perhaps not if we wanted to measure a dozen or more.
Paul Chapman proposed the use of jittering to get over this problem, the sort of solution I am typically drawn to. I use jittering a lot. Like, loads. The only drawback here is that with jittering you can’t control the distribution on the vertical axis, and so you could still end up with four of six items being packed really closely together and then the other two apparently far away. I jotted an alternative idea, which involved drawing the line from the previous year beginning one level below the present year:
While this took away the problem over lines on top of each other, I still wasn’t convinced that this helped – with a larger number of items this could look quite cluttered in places. So, once my miserable journey home came to an end it was time to crank up the laptop and have a go using Tableau, beginning with an attempt to recreate Emma’s original albeit with filled circles:
Pros: Neatly places each item on one line, so is quite compact
Cons: Restricts clarity when lines overlap
And here was my attempt at the jittered equivalent, suggested by Paul:
Pros: Generally separates items
Cons: You can’t jitter two points together (or can you?), so we inadvertently create movement on the vertical which has no meaning, and the overall line length could be misleading.
Gwilym Lockwood has neatly answered the question regarding jittering points together, involving fixing the RANDOM() value to each category using a Level of Detail calculation:
Nice! BTW, you can jitter two points together by fixing on the category and taking the average – this'll pack them slightly more compactly than indexing/separating out the category dimension: pic.twitter.com/0TulFeJ7Dz
— Gwilym Lockwood (@GwilymLockwood) May 22, 2018
Pros: Maintains the same vertical position for each category
Cons: You still can’t control the vertical position, so risk categories bunching or overlapping each other
Here is the Tableau mock-up of my alternative:
Pros: Items are separated with a common vertical distance, and so one ‘row’ up represents the change of one year
Cons: Movement on the vertical axis still distracts away from the lateral.
In subsequent discussion, Adam McCann and Emma discussed finding a way of retaining the horizontal line, but separating each tadpole and stacking them. Here, the incentive must be to pack them as closely together without losing sense, which in my view means ensuring that there is enough pixelwidth between each circle and the line of the entry below it. So I settled on this as a proposed version of the original chart:
Pros: The lines cannot overlap, but overall height is kept to a minimum. It could work just as well with two items or with twenty.
Cons: It’s perhaps not as aesthetically pleasing as the original with transparent circles.
I sought to then have a go at extending this to another data source, namely good old Superstore. Here’s a Tadpole Chart showing the change in sales for fourteen states between 2017 and 2018:
Not too shabby at all – the separation on the vertical axis seems pretty neat. But this presents a new question – how should these points be ordered? To arrange this in Tableau I assigned a rank according to a nonsense measure I created, but would this be better ordered by sales in one of the two years? Let’s see it in ascending order by 2017 sales:
And by 2018 sales:
Sequencing the items according to the current position (where the dots, or ‘heads’ of the tadpoles, are) appears to make more sense, and would be consistent with Jon Schwabish’s approach to this type of problem, albeit that his were in descending order. And if we were looking to make a more direct point, some smarter use of colour to make it would be appropriate:
I really like the idea of the Tadpole Chart as an alternative to the more prevalent Dumbbell, since it gives greater focus to a specific dot. Whether further variations on the theme emerge from the pond, time will tell. Massive kudos to Emma for creating and sharing it.
I have put all of the above examples into a Tableau Public viz, which is also shown below.
Nice looking chart. Thanks for the variations & resources Mark!