Data Viz Done Right

August 25, 2019

#MakeoverMonday: Mobile is taking over the global gaming market

No comments
After a week on holiday and skipping writing a Makeover Monday blog posts for the first time in 4+ years, I'm back with a topic that I can attest to give my boys' affinity for gaming.

This week's chart is from Statista:

What works well?

  • The title clearly explains the story in the chart.
  • The colors are easy to distinguish.
  • The bar chart helps us see the increasing revenue.
  • Placing mobile at the bottom of the stacked bars makes it easy to see the increase in the mobile share.

What could be improved?

  • All of the labels make the chart look quite busy.
  • Is the image of the platforms necessary?

What I did

  • I wanted to look at the relationship of share and revenue over time, which led me to a connected scatterplot.
  • I thought it was important to look at each platform independently, so I placed them inside "cards".
  • I included BANs based on the estimated revenue for 2021.

Let me know what you think.

August 13, 2019

#TableauTipTuesday: How to Compare Ranks within a Dimension with Set Actions

No comments
Have you ever needed to compare the rank of items, but only show two of them? For example, you want to show any player compared to Player A. Player A should always be in the view and another play should only be shown when selected.

And, when you display any players, you need to show their rank amongst everyone. This is where set actions come into play.

In this example, I show you how to compare any car to a car that you selected from a parameter. The car you select from the scatterplot appears next to the car selected from the parameter and the overall rank for each car is displayed.

August 11, 2019

#MakeoverMonday: The Social Investment of Clinical Trials

No comments
This week's viz is from Aero Data Lab analyzes clinical trial registration records from 10 large pharmaceutical companies. Here's how to read it:

  1. The trial start date on the x-axis.
  2. The disease/condition of interest on the y-axis.
  3. Each bubble in the figure corresponds to a trial. 
  4. The bubble color corresponds to the company
  5. The bubble size corresponds to the number of human subjects enrolled. 
  6. The bubble shape indicates the trial’s current status.

So basically you need to be able to understand quadruple encoding of the bubbles, which is quite difficult. It's very hard to visualize data that is this dense; kudos to the author for giving it a go.


  • The article reference provides a good overall analysis of the data.
  • Including the trial start dates on the x-axis helps understand when the trial took place.

  • Too many colors
  • The x-axis labels are slanted.
  • It's way too long (but I understand why it was designed that way).
  • There aren't any legends.
  • There are too many shapes.
  • The bubbles are trying to do too many things at once.
  • Comparisons are very difficult.

I had thought about examining the costs, but there isn't an information about the costs, even though the article references it. Instead, I decided to focus on the scale of the enrollees; that is, the number of people participating in each trial.

  • I used BANs for the enrollees per pharmaceutical company. I then used this as a set action to highlight that company in the line chart.
  • I looked at the enrollees per status, but I don't think that makes sense since it's the latest status. 
  • The same applies to the phase; it also only shows the latest phase.
  • I looked at how many enrollees there have been since the start the first trial for each company.
  • I included the enrollees per condition and used a set action for proportional brushing for the company selected.

I'm about to head on holiday for eight days, so I had to get this one out the door.

August 5, 2019

#MakeoverMonday: Britain's Reduced Dependency on Coal

No comments
For week 32, Eva picked a data set about Britain's progress towards zero dependency on coal power. There have been calls to do this in the US, even policies put into place by the Obama administration, only to have Trump rip them all apart to appease his donors. Slimeball!

  • Great color scheme
  • Easy to understand layout
  • Good color legend
  • Informative title and subtitle

  • Not much; it's quite fantastic.
  • Maybe make it more interactive so you can see the specific values when you hover

I wanted to see if I could rebuild this viz because it looks so good and it would be a good learning experience for me. Creating the viz was pretty straightforward. The tricky part was getting the colors to work just right. I did that through a calculation that makes 0% go to -20% so that the color range would be close to the original.

Lastly, I wanted to change the title and subtitle to something different that explains the data better. I pulled some text out of the article by The Guardian.

July 30, 2019

#TableauTipTuesday: How to Sort by Measure Names with Parameter Actions

No comments
Parameter actions are as powerful feature in Tableau. In this tip, I show you how you can update a parameter with the Measure Names field. In that past, you could never use Measure Names in a calculation, but parameters are now an exception because of parameter actions.

July 29, 2019

#MakeoverMonday: STD Infection Rates in America 1996-2014

No comments
For week 31, I asked the community to makeover one of my very first Tableau Public dashboards. Tableau Public went live with version 6.0 in November 2010.

Here's the viz:

Eva had the idea this week to created a discussion on Twitter about what people thought could be improved. For me, it's been a fascinating discussion and it shows how much people participating in Makeover Monday have learned about data visualization. Follow the thread here.

  • Simple title that includes the time frame for context
  • Using the subtitle as instruction
  • Keep the filters grouped together on the right, out of the way

  • Lose the red/green color palette.
  • A diverging color palette should only be used if there's a natural midpoint; there isn't one with this data
  • There's double encoding on every chart.
  • The State filter list it too big; granted though that there was no multi-select dropdown filter at the time.
  • The map and the states bar chart are the same.
  • The sparklines and the bar charts represent the same data.
  • The reference lines aren't needed. What does an average infection rate really mean?

I decided to go back to Tableau 6 to see if I could create something decent. You can see the whole recording below. I took a lot of the feedback from Eva's thread and incorporated it into my viz. A few decision I made:

  1. Simplified the metrics
  2. Used a map that weights all states equally (like a hex map but circles)
  3. Used only a single color
  4. Used highlighting more effectively
  5. Created simple filter actions
  6. Used simple chart choices

So here's my Makeover Monday, built with Tableau 6.0:

July 21, 2019

#MakeoverMonday: Arsenal Player Stats 2018-19

No comments
This week for #MakeoverMonday, Eva was ever so kind to pick a topic that I really enjoy...Arsenal! She did this to coincide with my 800th Tableau Public viz. More about that in a future blog post.

Here's the original viz:


  • A table is a simple way to display stats that serve the purpose of looking up values. That seems to be what the designer had in mind here. This viz isn't for comparing players.
  • Being able to sort by the headers
  • Including an image of the player; this helps those that are already familiar with them.
  • Including links to the player's profile

  • Other than this being used to look up information, what purpose does it server? It merely a list of facts.
  • There's no context for the numbers. How does a player rank amongst the team?
  • It's visually unappealing.
  • I can't find definitions for some of the stats. For example, what does "In Squad" mean? No clue!

I first thoughts about creating player cards with the stats over time, big numbers, etc. But the data was only for one season, so I had to scrap that idea.

Then I thought back to a viz by Andras Szesztai that I was shown last week. His viz is about NBA basketball team spending by season, and it includes stats like the lowest, highest, and average payroll. He then has a mark on the viz for the salary cap.

I took his concept and applied it to the team and player stats. I included the minimum, maximum, and average for the team for each stat (like Andras did for each season). I then included a dot for the player selected. This allows you to see how the play compares within the team as a whole. So I got to include a player card of sorts after all!

Lastly, I made it mobile friendly because it seemed to make more sense to scroll down the viz vs. laying them out in a grid.

Check it out!

July 14, 2019

#MakeoverMonday: More than ever, Americans aren't having sex

No comments
Week 29 has us analyzing the changing frequency of sex by Americans. Thank you to Pablo Gomez for bringing this chart to my attention.

What works well?
  • Overall, the chart is really good. 
  • The title and subtitle make it very clear what the viz is about.
  • The labels focus you to the topic the creator wants you to focus on.
  • I like how the first year is a filled dot and the last year is an open dot.
  • Bolding the first and last years on the axis
  • Including the % sign on the y-axis for only the top value

What could be improved?
  • Is this colorblind friendly? I'd recommend verifying.
  • Does green mean good?
  • I don't know how they came up with the percentages they did. They don't match the source.
  • Label the lines directly with their frequency instead of using a color legend.
  • Lighten the gridlines.

What I did
  • Like the original, I filtered out 2012 because the data looks corrupted.
  • I liked the original, so I didn't change a whole lot. The main difference was splitting up the frequencies vertically.
  • Because I split of the frequencies, I made the viz tall and skinny and mobile friendly.
  • I labeled the start and end of each line.
  • I labeled the highest value for each frequency.
  • I included the change between 1989-2018 on the end of each line as a summary. I had to float everything to make this work, which damaged my soul a bit.
  • I'm only displaying the first and last year on the y-axis.
  • I included tooltips so the reader can see the exact values.
  • I used three shades of a single color that go from least sex to most sex (since the focus is on less sex).
  • I kept the same title and subtitle.
  • I used fonts from the Washington Post website. NOTE: They won't render on Tableau Public unless you have the same fonts installed (Playfair Display and Yantramanav).

July 9, 2019

#TableauTipTuesday: How to Create a Parallel Coordinates Plot

No comments
In this week's tip, I show you how to create a parallel coordinates plot. If you want some additional practice, this chart type was used in Workout Wednesday 2019 Week 49.
What is a parallel coordinates plot? Here's the definition from The Data Visualisation Catalogue:

This type of visualisation is used for plotting multivariate, numerical data. Parallel Coordinates Plots are ideal for comparing many variables together and seeing the relationships between them. In a Parallel Coordinates Plot, each variable is given its own axis and all the axes are placed in parallel to each other. Each axis can have a different scale, as each variable works off a different unit of measurement, or all the axes can be normalised to keep all the scales uniform. Values are plotted as a series of lines that connected across all the axes.

This workbook uses data from the NBA Stats website. You can get the data by downloading the workbook and unzipping it.


July 8, 2019

#MakeoverMonday: Asylum Applications in the EU

No comments
There's way too much negativity in the news about migrants being terrible people, causing problems in their new countries, being rapists and bringing drugs. Every human being deserves to live a happy and safe life. Period.

This week's topic relates to asylum seekers in the EU.

Source: European Asylum Support Office

What works well?
  • Map allows for exploratory analysis
  • Using a time series for the years
  • Informative tooltips
  • Single continuous color scale for the pending cases
  • The time series overall clearly show the growing trends.

What could be improved?
  • The filled map makes it hard to find smaller countries and to compare them with larger countries.
  • The diverging color scale of the dots on the map imply that once you get 50%, that means things are good. Is that true?
  • There's no indication of what the size of the dots represent.
  • There are too many colors fighting for attention.
  • The stacked bar charts are good for showing the overall trend, but the patterns for the individual colors are hard to determine.

What I did
I started by reading the article and noted three key statements that I wanted to focus my analysis on:

  1. Most applications for asylum were lodged in Germany, France, Greece, Italy and Spain.
  2. Citizens of Syria, Afghanistan, Iraq, Pakistan and Nigeria lodged the most applications. 
  3. Only five out of the 20 most common citizenships of asylum applicants in 2018 applied in increasing numbers compared to the previous year: Iranian, Turkish, Venezuelan, Georgian and Colombian nationals.

From there, I attempted to build charts for each of these facts. I was not able to create charts for the second and third facts as that level of detail was not provided in the data set. Instead, I changed my focus to the headlines at the top. I created BANs and some basic charts, but instead of comparing to 2017, I compared to 2015 since that was the peak of applications.

Click on the image to view the viz on Tableau Public.

July 2, 2019

#TableauTipTuesday: Fun with Maps

No comments
Dot maps, density maps, round maps, square maps, hexbin maps, emoji maps...this video shows you how to build all of them.

July 1, 2019

#MakeoverMonday: The Top Killers in Game of Thrones

No comments
Confession: I have never seen a single second of Game of Thrones.

Now that I've admitted my shortcoming, I would like to thank David Murphy for volunteering his viz and data set for this week's Makeover Monday.

From the perspective of an analyst, this is exactly the kind of data I love; data I know nothing about. This helps me approach the data without any bias and to ask simple questions of the data before deciding on my visualization. More on that after a quick review of David Murphy's viz.

What works well?

  • Visually, it captures your attention quickly.
  • The person chosen, profile picture, and summary of people killed gives a quick summary before the viz goes into more detail.
  • The viz is designed to go into more detail as you scroll down.
  • The headers of each section look really cool and break apart the viz well.
  • Using a bar chart to rank the killers.

What could be improved?
  • The viz is only relevant to people who understand Game of Thrones.
  • It's not obvious that the bubbles on the right represent people killed.
  • Packed bubbles are rarely a good option for ranking.
  • There are too many colors.
  • The bar chart doesn't need to be double encoded (length and color represent the same data).
  • The episode breakdown would be easier to understand as a heatmap.
  • Remove the character pictures from the bar chart.

What I did

I started by trying to understand the data. Seasons, episodes, killers, and victims are all easy to comprehend so I stuck with those. The obvious chart choice would be a bar chart, but this week, I thought I would try something new. I supposed seasons and episodes create a time series, but I didn't like how that turned out.

The next chart that popped into my head was a network graph, but I wasn't sure it would work visually. I gave it a try though by assigning random coordinates to each person and connecting them using the makepoint and makeline functions. It looked like crap. That's because of my random coordinate generator; I imagine there's a better way to approach that.

I liked the idea of some type of graph connecting people so I did a google search for chord diagrams and this amazing viz and tutorial from Luke Stanke. Luke included all of his data prep steps. He used R, which I have used sporadically, but I thought it would be fun to learn how to create the workflow in Alteryx. His steps were really well documented, making them quite simple to replicate. All I had to do was swap out my dimensions for his and change a couple of aggregations.

His tutorial then take you through how to build the viz in Tableau. Easy peasy! Lastly, I removed Daenerys Targaryen from the data set because she killed 1008 people, which is over 500% more than the next highest killer and it was making everything else look terrible. I don't think the labeling is quite right, but I also couldn't figure out how to debug it after many tries.

And now I have my first chord diagram in Tableau showing who killed whom in Game of Thrones.

June 24, 2019

Canadian Consumer Price Index

No comments
On Saturday, I was catching up on some Workout Wednesday challenges. Week 51 2018 was a challenge from Rody Zakovich to learn about using containers to control the padding on dashboard objects. I love the way this looks so I wanted an excuse to put it into practice.

I received the weekly newsletter on Friday and it contained a data set about the Canadian Consumer Price Index. Given I had just completed the padding challenge, this made for a relatively quick exercise.

In addition to working on the padding, I also incorporated Parameter Actions that allow the user to choose an item to explore.

Here's the lesson: the only way to get good at something is to practice, relentlessly. Find reasons to practice; don't wait for them.

Let me know what you think about this design...thanks! Click on the image for the interactive version (it's too big to fit in a window on this blog).

June 23, 2019

#MakeoverMonday: The European Union consumes more than its fair share of alcohol

No comments
For week 26, Eva challenged us with making over this visualization from World Atlas:

Source: World Atlas

What works well?
  • Clear title
  • Countries are listed in decsending order
  • Simple color for the bar chart
  • Labeling the axis

What could be improved?
  • The axis is truncated; this is a big no-no for a bar chart.
  • The labels for the countries don't need to be rotated on a diagonal.

What I did
  • A bar chart is the easiest way to communicate, so I've kept that.
  • I rotated the bars to make them horizontal.
  • I save space by labeling the inside of the bars with the country name.
  • I labeled the ends of the bars so that I wouldn't need an axis.
  • I highlighted the EU countries, since I found that an interesting piece of the analysis.
  • I created the viz as a mobile size, since I thought this was as good of an opportunity as any to practice mobile design.


June 19, 2019

#WorkoutWednesday Week 24: Side-by-Side Bar Chart

No comments
In preparation for #WorkoutWednesday Live at TC Europe, I wanted to warm up by completing week 24. Luke challenged the community create a "simple" side-by-side bar chart.

While I can understand that this is something that could be used in a work setting, I think the juice you get from building it aren't worth the squeeze. In other words, there are too many hacks to get it to work. Still, though, it was a fun exercise.

  1. The calculations are quite simple.
  2. You don't need table calculations.
  3. I chose the advance option, which I first tried by using another measure to space out the bars, but that didn't work so I created three separate sheets with blank containers for spacing. This hurt my soul, but it got the job done.
  4. I don't agree with creating a percent change of percentages. For example, it's hard to comprehend that Home Office has a 28% great contribution to furniture than to the overall. That doesn't make sense to me. When I see the numbers, I view it as 0.7% greater contribution. Maybe I'm misunderstanding the purpose.
  5. I don't like having to create a dummy sheet for the footers. That's not Luke's fault though; it's a limitation of Tableau that requires the workaround.

So here's my solution. If you download the workbook, you might like the name of percent change of percent calculation. I still love you Luke!

June 18, 2019

#TableauTipTuesday: How to create routes with the MAKEPOINT and MAKELINE functions

No comments
In this week's tip, I show you how to use the makepoint and makeline functions that became available in Tableau 2019.2 to create routes. I show two examples: airline routes, and bus routes. The bus routes also shows you how to use a calculated join to bring one row up to the previous row.

Leave a comment if you have any questions.

June 17, 2019

#MakeoverMonday: Finding the right Airbnb for you in Berlin

No comments
This week, the #MakeoverMonday roadshow is in Berlin for TC Europe. We hosted a live event this afternoon with a few hundred of our closest Tableau friends. Since we're in Berlin, I found a data set and visualization about Airbnb listings and reviews from Inside Airbnb for everyone to use.

What works well?

  • Since the data is about finding a place to stay, a map is super intuitive for the user.
  • The map helps show concentrations of Airbnbs.
  • The summary stats on the right help add context.
  • There are some good filtering options.

What could be improved?
  • The red/green color palette won't work for the colorblind.
  • The red/green palette makes me think of bad vs. good, but they're actually for categorical data.
  • It's harder than necessary to find information about specific rentals.

What I did
I joined the spatial file to the listings and reviews data in Alteryx. I joined the data to get some summary data that I needed for my viz. I then smoothed out the edges of the neighbourhoods to make the map less jagged.

From there, I thought about the data from the user's perspective. What would I want to know about properties and how would I find that information? That served as the basis for this exploratory viz.