Data Viz Done Right

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.

June 9, 2019

#WorkoutWednesday Week 20: Top and Bottom States for Total Orders

No comments
As I continue catching up on WW, I went to week 20, which was a live event at the SFTUG, so I knew it had to be solvable quickly and wouldn't require any crazy calcs. The goal was to create a view that:

  1. Groups together the top 10 States, bottom 5 States and all other States based on their total orders.
  2. Shows all other States as an average number of orders across the States
  3. Display the 2018 value plus the change vs. 2017 on the end of the bar with arrow indicators for the change
  4. Show different colored bars for 2018 depending on the groups created in step 1 above

I thought for sure this was solvable with table calcs and it mostly is, until you get to all other States. You would need State in detail and this draws multiple bars and the calcs for 2018 and 2017 orders would need quite a bit of thinking to get them just right. I decided on LODs instead.

If you haven't solved this one yet, I highlight suggest you consider sets for the Top, Bottom and Blank groupings.

Here's my solution:

#MakeoverMonday: Is it wrong for same-sex adults to have sexual relations?

No comments
It's #PrideMonth, which makes for perfect timing for this week's makeover. Eva has chosen a simple line chart that allows the user to answer a simple question: "Is it wrong for same-sex adults to have sexual relations?"

What works well?
  • The title, question response, and breakdown are all organized together. They also look quite crisp; that's because they render differently because they aren't part of the Tableau rendering.
  • The scale goes to 100%.
  • The horizontal gridlines help guide the eye.
  • Showing the year header every five years
  • Using a line chart to show trends over time
  • Allowing the user to highlight a line by clicking on the legend
  • Overall, it's an easy chart to understand.

What could be improved?
  • The share, print, export, and table buttons are in the way. Move them to the footer.
  • The colors are too similar.
  • Remove the dots on the lines for each year.
  • Why is the title green?
  • Legend text is cut off for some selections

What I did
I like the overall design of the original, so I decided to clean it up and change the main metric to answer the question differently.

  1. I removed all of the dots from the lines.
  2. I allow the user to highlight an age via a parameter action.
  3. I changed the metric on the change from % of population to the change vs. 1973. For me, this is a more meaningful way to show the change in opinions.
  4. I moved the title closer to the chart.
  5. I used Benton Sans as the font (Tableau fonts get boring sometimes).

This ended up being pretty much what I built last week, and I'm ok with that. If a chart works, stick with it.

June 8, 2019

#WorkoutWednesday Week 22: X% of Sales make up Y% of Orders

No comments
This was a tough one. For Workout Wednesday week 22, Lorna set out the challenge of reproducing a trellis chart with each pane being a separate Pareto chart or sales vs. number of orders.

Great! That part was pretty straightforward. I've done a Pareto tons of times. I've done a trellis tons of times.

Then there was the coloring of the line. That is, the line needed to be colored in each pane up to the point where two reference lines meet. I got that right I thought.

Lastly, there was the little detail (i.e., not so little) of creating dynamic reference lines that update based on both the parameter selected and the point which you hover over. The fact that these are two conditions should have been my first clue.

I spent quite a while on the reference lines trying to make one reference line act upon two calculations. Well...that's not how reference lines work. Then it hit me that I actually needed four reference lines. Two of them will always hide based on the option selected in the parameter.


The calcs were fiddly. I got lost in the logic a couple times because what you have to do is a bit counterintuitive, kind of like double negatives. I wrote down the four scenarios so that I could approach them one by one.

My calculation names are a mess, which drives me insane and actually made getting to the solution much harder. I'm normally very good about making sure I have clear names, but in this case I had several with almost the same name, so I kept mixing them up, hence why writing things down helped.

Once I got that figured out, I was done. A bit of tidying, then I downloaded Lorna's solution to compare mine too. We had taken a nearly identical approach (it must be that teacher she had at The Data School that set her on her way).

Thanks for the challenge Lorna! I enjoyed the struggle and always love the eureka moments. This was another viz that I could easily see used in a business context.

June 7, 2019

#WorkoutWednesday Week 23: Which sub-categories are ordered most?

No comments
I haven't done a Workout Wednesday in quite some time, in fact, this is the first one I have done this year. However, when I saw Curtis Harris' challenge this week (check it out here), I knew I wanted to give it a try. Why? Because it's a view that is very usable in a business context. I could certainly see this being used on a mobile phone in a real business.

  • Create a bar chart which displays the sub-category label on top of its bar
  • Label all bars to the right of the maximum value in view
  • Create a parameter that changes the display from a percent of total view to a raw order count view
  • Create a progress shadow for every bar
  • Show progress to 100% or progress to the maximum value depending on the parameter selection
  • Only use one sheet
  • Match formatting and colors
  • Match tooltips

The part that tripped me up the most was labeling the sub-category above the bar. I had done this before, but couldn't remember how, and I didn't to look back; I wanted to figure it out again. One other thing I wanted to do was make sure that the text didn't overlap the bar as it shows in the viz to rebuild (sorry Curtis, I know it's not 100% correct now).

To do this:
  1. Add Sub-Category on the rows twice.
  2. Hide the headers
  3. Turn on subtotals
  4. Move the column subtotals to the top
  5. Add a dummy measure as a secondary axis with the value 0
  6. Make sure the mark type is a circle on this shelf
  7. Add Sub-Category to the text shelf on the shelf with the circle and add an extra line below it in the text box with a space. This forces an extra line.

Tada! Fun one Curtis!

June 3, 2019

#MakeoverMonday: Are Americans sleeping more or less than they did in 2003?

No comments
A couple weeks ago, I finished Matthew Walker's amazing book Why We Sleep. I cannot recommend this book enough. It's both fascinating and terrifying. And if it doesn't change how you look at sleep, I'd be extremely surprised.

Given how this book impacted me, I wanted to find a topic about sleep. I found the American Time Use Survey, the best data I could find on the topic. As it turns out Matthew Walker is hosting an event on London Thursday night that I've bought tickets for. What amazing timing!

Here's the original viz from the ATUS:

What works well?
  • It's a simple side-by-side bar chart that makes comparing men to women easy within each age group.
  • Clear axis title
  • Labeling the bars can help with interpretation
  • Ordering the ages chronologically
  • The title is simple.
  • I like the line that divides the title from the chart.

What could be improved?
  • The axis is cut off. You should never ever truncate an axis for a bar chart as the length of the bar is what you are measuring, not a portion of the length.
  • The 3-D shading of the bars is unnecessary.
  • It would be good to see how sleep has changed over time. Are people sleeping more or less?
  • The labels are misleading. It's obvious some bars are longer than others, yet they are both showing the same values, e.g., 15-19 years.
  • What's the takeaway from the chart?
  • The data includes naps and spells of sleeplessness. What proportion does this make up?
  • People typically overestimate how much they sleep, so how accurate is the data in the end?

What I did
  • Incorporated all of the years
  • Compared genders vs. ages vs. overall
  • Used parameter actions to allow the user to highlight an age group
  • Look at the change since 2013 to see if groups are sleeping more or less

I did find that older Americans (65+) are sleeping less than in 2013 and men tend to sleep less than women. Overall, the data turned out to not be as interesting as I had hoped, but that's ok. It's still always fun to explore and understand data and to practice new features.

May 28, 2019

#TableauTipTuesday: Create an Interactive Quadrant Chart with Parameter Actions

No comments
Parameter actions are now out in the wild with Tableau 2019.2. These have me going through A LOT of charts I've made with parameters before, evaluating which ones would benefit from Parameter Actions.

The first chart I wanted to try was a quadrant chart. A quadrant chart colors each quadrant based on thresholds set for each axis in a scatter plot. Previously, I created two parameters and the user had to type in numbers to adjust the view. However, with parameter actions, I can now enable to use to update the quadrants by simply hovering over a dot.

And here's the video...enjoy!