This week Tableau themselves chose the data; a celebration of the importance of data skills based on LinkedIn’s annual Top Skills reports. The Tableau example includes a bump chart and box and whisker plot, whereas the LinkedIn version is a simple list per country in a slide share style:
.
Thoughts on the original charts
The LinkedIn version is simple and clear. You can see which skills are ranked highest and how that ranking has changed since last year. However it is hard to compare the countries to each other or to the overall global ranking (you have to flick back and forth in the slide deck). Also you can’t see how rankings have changed from years prior to 2015.
The Tableau version addresses some of these issues. It’s still a little hard to compare countries to the overall global ranking. The bump chart shows the change in ranking across multiple years, but personally I find bump charts a little hard to follow particularly if there’s no labelling or colour legend.
Is there such a thing as spark dots?
My first idea was to build a set of spark lines showing the current and historical rankings for each skill. Unfortunately this didn’t look great as some skills don’t have rankings in some years. The spark lines looked a bit disjoint and in some cases were just spark dots, which presumably isn’t a real thing!
So, what could I add to fix this?
Hang on, why did I want to add something when the data was just a ranked list? Instead I decided to step right back and try a simple styled list. I’d still want to show change in rank from 2015, but would leave out comparisons to 2014. This would still present a challenge as I’d need to balance the emphasis on the skill versus the information on ranking changes, and I’d need to deal with cases where there was no change in ranking or the skill was new to the rankings. I’d also have the challenge of comparing different countries.
Now to be honest I passed a bit on this second challenge, deciding that with limited space (and audience attention) it was better to just provide a comparison to the overall global ranking and the option to chose the country. So I wasn’t going to address all of the points I noted with the originals, but I was happy that I’d be honouring the nature of the source data.
Here is the finished viz:
The core of the viz is a pretty basic matrix of text by rank and country. Check out the version on Tableau Public if you want to dig into anything in particular. You may note that time could be spent making the workbook more robust as I have hardcoded 2015 and 2016 as the years to use, instead of using LOD or table calcs to find the latest and immediately previous year. There were two particular tricks I used this week that seemed to be worth elaborating on though:
Showing just the selected country and the global list
To handle this I didn’t just want to use the existing country field as a filter because I’d be relying on the user to always have one country plus “Global” selected. Instead I created a parameter with all countries except global (tip: you can use the “add from field” option when creating a parameter to save typing all of the options in). I could then add a workbook filter on a calculated field to only include global and the selected country:
I also created a calculated field for ”country order” so that global always appeared in the right hand column. Otherwise sort order would be alphabetic and sometimes global would appear in the left hand column.
Colouring the text in EACH column differently
This was quite fiddly. I’d already created calculations to show an up arrow, down arrow and relevant text for the supporting label about each skill. I then realised that I wanted the selected country to stand out more than the global list. To do this I ended up creating two calculations, one for global which would return NULL when country was not global and one for the selected country which would return NULL in the opposite situation. The idea here is that only one of the calculated fields ever returns a value so I could give each a different colour safe in the knowledge that only one of them would be displayed in any one cell. Note the lack of an ELSE block in the calculation below which ensures NULL is returned. I could have used ELSE “” given that the calculation is used in label text of course, which may have been more maintainable?
If you’re wondering what those strange symbols are in the label definition above then it’s just that I’ve selected a font of Wingdings 3 for the calculated fields that return and up and down arrow.
Job done!
Another great week for honing Tableau skills. Nothing I’ve done this week is rocket science by any means, but as someone still learning the product, and about data visualisation as a whole, it feels like I’m making progress. And of course it’s pretty cool to see that some of the skills used are in demand!