Lesson one this week was an important one: slow down for #MakeoverMonday as data visualisation needs you to understand and validate the integrity of your data before wading in.
My issue wasn’t one of innate arithmetic incompetence, but that was the consequence of not paying attention to the data we had. Andy Kriebel has already expertly penned a summary about the “average of averages“.
My corrected final submission is here, but what other submissions did I want to learn from this week? I want to focus on two things:
- Things I can actually bloody do! Radials, Sankey Charts, anything bendy is out! I love the look of them, but my maths is too rusty to deliver them confidently. Real life equivalent? I love Ferraris; I drive a sodding Vauxhall Zafira. Know your limits!
- I want to learn little tips and tricks that improve the end user experience, and can be incorporated into the Tableau work my team and I do in the office each day. Little things like this filter trick
It was a week dominated by line charts, heat maps, cycle plots and the occasional tiled map or small multiple. I know how to do 4 out of the 5, and won’t use a tiled map at work any time soon.
The first example is from Ali Motion. I chose this viz simply because it was the first I saw this week which combined the datasets to present maps and charts together. I didn’t know how to do this on Sunday when the submission was made, but I do now, and that’s what #MakeoverMonday is all about.
Polygon Maps are new to me, so I googled them and found this useful video from Tableau (you may need to register with them to view it).
In summary, Polygon Maps are like a dot-to-dot puzzle, where each point is defined by longitude and latitude coordinates, and the order in which to join them is determined by another field (PointOrder in this data).
All of this information is required on a Polygon by Polygon basis. Given that information, it’s no surprise that the structure of the map element of Ali’s viz is:
It’s reassuringly simple. It’s a prerequisite that we have the Geographical Measures on Row / Column. It’s then just a matter of logic that we need the PolygonNumber field on Detail so we know which of the territories is being drawn. It follows that in order to draw that Polygon, we need each coordinate (see Rows and Columns), and that for each Polygon, we need to know the order in which to join the dots.
Without PointOrder, it’s screwed:
Reinstating PointOrder but whipping out PolygonNumber is less screwy, but screwy nonetheless:
Easy enough. But how was this set of data, joined with the RTI data? The chain link on Region is an obvious clue:
Navigating to Data > Edit Relationships opened the rightmost box and revealed the join between Name in the boundaries extract, and Region in the RTI data. I couldn’t actually find a way to see Name in the data source itself – everything was listed as New Zealand:
Not sure what that’s all about, but if I dragged Name and Region onto a sheet, I could see the sort of Names I expected:
Time to move away from maps, and onto this submission from Pablo Sáenz d Tejada. It’s aesthetically pleasing, efficient and easy to interpret, which ticks most data viz boxes. It’s also really simple to create and makes use of the RANDOM() function, which was something I wanted to go over again to commit it to (flaky) memory. This is the structure of the chart:
It’s so simple that there isn’t too much to explore, but it’s worth basking in the fact that the best vizzes don’t have to be complicated. Everything is self explanatory, but I’ll start messing around with things to see what happens. First, what if we make the Month field continuous and lose RANDOM()?
Now we see why we have RANDOM()! Everything is aligned with uniform horizontal positioning, so overlapping points are hard to discern. Let’s whack it back in:
And now we see why Month should be Discrete. In its Continuous state, it produces an axis, which is why we have two distinctly separate “things” plotted. If Discrete, a Header is created, which means that (depending on placement) Rows and Columns are created. The whole Discrete / Continuous “thing” is well documented, such as here. Let’s switch back to the original view now, but stick RANDOM() on Rows:
So we have the RTI up top, and RANDOM() plotted below. The whole point of RANDOM() though was for us to create some horizontal “jitter” between points, which is why Pablo put RANDOM() on columns – to jitter across the page, rather than down the page.