May 112015

Much thanks to Susan Ferrari for exposing me to the concept of Net Promoter Score, Susan Baier for encouraging me to blog about it, and Helen Lindsey for providing anonymized NPS data.


My wife and I recently went out to a restaurant to celebrate our anniversary.  Accompanying the check was a survey card with three questions, one of which looked like this.

Figure 1 -- The classic Net Promoter Score question

Figure 1 — The classic Net Promoter Score question

We both agreed that the restaurant was very good, if not excellent, and that we would indeed recommend it to friends.  My wife suggested we circle the “8”.

I told her that if we were enthusiastic about recommending the restaurant we should give it a “9” as a 7 or 8 would be tabulated as a “neutral” or “passive” response.

She looked at me quizzically and asked why an “8” would be considered neutral.

I then explained how the Net Promoter Score works.

Understanding the Score

Respondents are presented with the question “Using a scale from 0 to 10, would you recommend this product / service to a friend or colleague?”

  • Anyone that responds with a 0 through 6 is considered a Detractor.
  • Anyone that responds with a 7 or 8 is considered a Passive (or Neutral).
  • Anyone that responds with a 9 or 10 is considered a Promoter.

The Net Promoter Score (NPS) is computed by taking the percentage of people that are Promoters, subtracting the percentage of people that at Detractors, and multiplying that number by 100.

How to compute NPS, courtesy B2B International.

Figure 2 — How to compute NPS, courtesy B2B International.

If you are like me (and my wife) you’re probably thinking that a “6” is a pretty good score and that it shouldn’t be bunched among the detractors.

I’m not going to get into a debate about NPS methodology and its usefulness, but I do want to show you some good ways to visualize NPS data.

The Problem with the Traditional Presentation

Consider this snippet of NPS survey data with responses about different companies from people in different roles.

Figure 3 -- Raw NPS data about different companies from people with different occupations.

Figure 3 — Raw NPS data about different companies from people with different occupations.

If we just focus on the NPS and not the components that comprise the NPS we can produce an easy-to-sort bar chart like the one shown here.

Figure 4 -- Traditional way to show NPS

Figure 4 — Traditional way to show NPS

Yes, it’s easy to see the company D has a much higher NPS than company H, but by not showing the individual components – and in particular the Neutrals / Passives –  we’re missing an important part of the story as the Neutrals / Passives are right on the cusp of becoming promoters.

For example, a Net Promoter Score of 40 can come from

  • 70% Promoters and 30% Detractors
  • 45% Promoters, 50% Passives, 5% Detractors

Same score, big difference in makeup.

An Alternative Approach to Displaying NPS Results

Consider the dashboard below which presents the data as a divergent stacked bar chart.

Figure 5 -- NPS dashboard with toggle to show percentages and score.

Figure 5 — NPS dashboard with toggle to show percentages and score.

The chart is easy to sort and you can also see that Company B and Company F have a relatively large group of Neutrals.

That said, being able to see the NPS score is very useful so the dashboard (see working version at the end of this post) has a toggle that switches between percentages and the score, as shown below.

Figure 6 -- Divergent stacked bar chart with NPS overlay.

Figure 6 — Divergent stacked bar chart with NPS overlay.

Note that the NPS divergent stacked bar chart is just a variation on a Likert scale divergent stacked bar chart.  You can find an explanation of how to build this type of visualization here.

What’s Next?

We now have what I think is a more insightful way to visualize Net Promoter Score data.

But clients and readers of my blog have asked me to address some of these questions as well:

  • How do you show the difference in NPS, or just the difference in percentage of promoters, between this quarter and the previous quarter?
  • If there is a difference, is the difference statistically significant?
  • What’s a good way to visualize and analyze NPS over time?

I will be addressing these issues in an upcoming post.  Stay tuned.

Mar 302015


Tableau 9.0 includes a built-in data prepping tool that makes reshaping survey data so it plays nicely with Tableau a much smoother experience than using the Tableau Excel add-in.  While this new feature won’t replace by trusty copy of Alteryx (for reasons that I explain later in this post) there are many occasions where Tableau’s new pivot feature will be more than adequate.

In this post I will walk through using the new pivot feature along with “temporary” blending to create a solid framework for using survey data with Tableau.

Special thanks to Susan Baier for bringing this to my attention and Jonathan Drummey for showing me Tableau’s Create Primary Group feature.

So, what do we have here?

Note: if you want to follow along you can download the Excel file here.

Consider an Excel workbook that contains two sheets.  The first sheet has the survey results, a snippet of which is shown here.

Figure 1 -- Some raw survey data

Figure 1 — Some raw survey data

Notice the format: one row for each survey respondent and a separate column for each question in the survey where each question is identified with a Question ID (e.g.,  Q0, Q1, Q2, Q134a, etc.).

Column A contains a unique ID for each survey taker, Columns B through D contain demographic information, and Column E contains a weight for each survey respondent.

The second sheet maps each Question ID to a human-readable version of the question and groups related questions into logical buckets.

Figure 2 -- Helper file that maps each Question ID to the wording of the question from the survey

Figure 2 — Helper file that maps each Question ID to the wording of the question from the survey

Note that when I first blogged about survey stuff I didn’t use a helper file but now I won’t take on a project without creating one as I don’t want to spend time aliasing hundreds of question IDs.  The Grouping column also makes is much easier to select related questions and visualize them together.

The data wants to be tall and thin

Anyone who has read up on the subject know that life with survey data and Tableau is a lot easier when the data is reshaped so let’s see how to do this with Tableau 9.0.

  1. In Tableau, connect to the data source and the sheet that contains the data you want to reshape and visualize. This is what it looks like on my screen.

    Figure 3 -- Survey data prior to pivoting (reshaping)

    Figure 3 — Survey data prior to pivoting (reshaping)

  2. Select the fields you want to merge / pivot / reshape, in this case everything except the Resp ID, demographic fields, and Weight field.
  3. Click in any of the highlighted fields and select Pivot. Tableau will combine the 20+ fields into two fields, as shown here.

    Figure 4 -- Data after it has been pivoted

    Figure 4 — Data after it has been pivoted

  4. Rename the first field Question ID and the second field Value.

    Figure 5 – Pivoted fields renamed

    Figure 5 – Pivoted fields renamed

  5. Indicate whether you want an extract (a good idea when Excel is the data source) and go to the Tableau worksheet.
  6. Drag Question ID onto the rows shelf. Your screen should look like this.

    Figure 6 -- Reshaped data in Tableau.  Instead of 20 measures for each question we have only one measure.

    Figure 6 — Reshaped data in Tableau. Instead of 20 measures for each question we have only one measure.

Creating the temporary blend

Now we need to connect and relate the Helper file to our pivoted survey data.  We will do this with a blend, but then use a very slick feature of data blending that will allow us to ditch the secondary data source. Here are the steps.

  1. Click the Add New Data source tool.8_dataSource
  2. Connect to the Helper File sheet from the same Excel workbook and indicate whether or not you want to create an Extract (of course you do!)

    Figure 7 -- The secondary data source

    Figure 7 — The secondary data source

  3. Return to the Tableau worksheet.
  4. Drag the Grouping field to the left of Question ID on the rows shelf, and Wording to the right, as shown below.  Note that you don’t *have* to do this but it’s always useful to see if the hierarchy is working correctly.

    Figure 8 -- Blended Data

    Figure 8 — Blended Data

  5. Right-click the Grouping pill on the Rows shelf and select Create Primary Group.
  6. Rename the group Grouping as shown below.

    Figure 9 -- Leveraging the blend to create an ad-hoc group based on Question ID fields.

    Figure 9 — Leveraging the blend to create an ad-hoc group based on Question ID fields.

  7. Click OK.
  8. Right-click the Wording pill on the Rows shelf and select Create Primary Group.
  9. Rename the group Wording and click OK.
  10. Click the primary data source (the one from which we initially selected Question ID). Notice the two groups that Tableau generated for us.

    Figure 10 -- Tableau-generated groups

    Figure 10 — Tableau-generated groups

At this point we no longer need the secondary data source as the primary source now has groups that map and alias the Question IDs.  Very slick.

Seeing this in action

Now that we have the groups it’s easy for us to do some very quick analysis.  For example, let’s suppose we want to see the average Likert scale score for the collection of Likert scale questions.

  1. Create a new worksheet.
  2. Drag Grouping into the Filters shelf and select the collection of questions you want to view, in this case Likert Set 1.

    Figure 11 -- The Grouping group makes is easy to indicate which sets of related questions you want to examine.

    Figure 11 — The Grouping group makes is easy to indicate which sets of related questions you want to examine.

  3. Drag Wording to Rows.
  4. Right-Drag Value to Columns and select AVG(Value).
  5. Sort in descending order.

Isn’t this great?  We didn’t have to go groping around for the right Question IDs and we didn’t have to alias anything.

So, are there any shortcomings?  Is this blend approach as good as being able to join the pivoted data with the helper file?

Yes, there are shortcomings

There are several things that a join will give us that we can’t get with a blend.

You cannot refer to the group in a calculated field

You can’t refer to a group in a calculated field, so something like this won’t be available:

IF [Grouping] =”Things you Measure” then [Value] END

You need to update the group members if you add new questions

Tableau’s generation of the primary group is much like populating the members of a parameter with the members of a field.  Tableau will do it when you click a button, as it were, but it won’t update the list automatically.

If you end up adding new questions to your survey or reorganizing how questions are categorized in your helper file will either need to regenerate the primary data source groups or manually edit them.

You cannot combine text results with numeric results

This is one of the major “gotchas” for me, at least for larger surveys.  With most commercial survey systems you can download the data in a label format or a numeric format.  For example, when downloaded as labels survey responses might look like this:

Strongly disagree
Strongly agree

When downloaded as numbers the same responses would look like this:


I find I like to have both label and numeric responses, so I pivot / reshape both sets of data and then join them together using Question ID and Response ID.  Using Alteryx I can perform the join but I cannot do it with Tableau 9 and pivoted data.


For complex surveys where I need to do a fair amount of data cleanup and need both next and numeric values I’ll continue to use Alteryx.  For shorter surveys where I don’t need to do a lot of prep work and where either labels or numeric values will suffice, Tableau 9.0’s new pivot feature suits me just fine.  It’s a great addition to a great product.

 Posted by on March 30, 2015 2) Visualizing Survey Data, Blog Tagged with: , , ,  29 Responses »
Mar 112015


Note: I based my Tableau Conference 2015 presentation on this blog post. You can download a PDF of the presentation and the Tableau packaged workbook.  Click here to see a video of the presentation.

Earlier this year one of my clients was updating a collection of survey data dashboards and they wanted to revisit the way they presented demographic data.  They thought that the collection of bar charts comprising the demographics dashboard was boring and wanted to replace them with something that was a bit more visually arresting.  In particular they wanted to take something that looked like this this…

Figure 1 -- a "boring" collection of bar charts.

Figure 1 — a “boring” collection of bar charts.

… and replace it with something that looks like this:

Figure 2 -- A "flashy" demographics dashboard

Figure 2 — A “flashy” demographics dashboard

When asked why they wanted something “flashier” they indicated a desire to draw the viewer into the dashboard and they thought a dashboard with more than just bar charts would do the trick.

I wondered “why stop there?”  Why not add pictures of kittens and puppies?

Figure 2a -- the Too Cute dashboard.

Figure 2a — the Too Cute dashboard.

The real issue here is that the underlying data just isn’t interesting and adding sexy visual elements will do nothing to make the data more interesting.  There’s only one way I know to make this kind of data “interesting”.

Make it personal.

Tapestry and Chad Skelton

I recently attended the 2015 Tapestry Conference where Chad Skelton of the Vancouver Sun presented a great session making the case that people are ravenous for data about themselves.

I was particularly taken with an interactive dashboard Chad created that allows Canadians to see how much older / younger they were than other Canadians.

I decided I would look at United States census data and build a similar dashboard.

US Census Data without Personalization

Here’s a histogram showing the relationship between age and US population.

Figure 3 -- A histogram showing the relationship between age and US population.

Figure 3 — A histogram showing the relationship between age and US population.

I have to admit this doesn’t do much for me although I do find the long downward slope from around the age of 50 somewhat interesting (but I am a bit of a data geek).

Contrast this general purpose graphic with the personalized dashboard shown below.

Did you try it?  Are you over 38 years old?  If “yes,” were you a bit depressed?

I certainly was.

While I don’t mean to depress anyone I do want to underscore how much more interesting the data is when the data is about YOU.

Make the Demographics Dashboard Interesting – Make it Personal

With the goal of personalization in mind let’s see how we can make the dashboard in Figure 1 more interesting.

Let’s start by gathering some information about the person viewing the dashboard; that is, let’s present some parameters from which the viewer can apply personalized settings:

Figure 4 -- Get your user to tell you something about himself / herself.

Figure 4 — Get your user to tell you something about himself / herself.

Now we can take these parameter settings and highlight them in the dashboard.

Figure 5 -- A "personalized" demographic dashboard.

Figure 5 — A “personalized” demographic dashboard.

We can then go one step further and invite the viewer to select the colored bars to see exactly how many people that took the survey have the same demographic background as the person interacting with the dashboard.


Figure 6 — There are 65 people who fall into the same demographic pool as the person viewing the dashboard.


I’ve become a big advocate for adding personalization to dashboards and a number of my clients have started to adopt the approach.  I’ve seen some very good results at Bersin by Deloitte where Bersin is leveraging their proprietary survey data by allowing individual organizations to benchmark their numbers against similar organizations.

Note: A few months ago Joe Mako sent me a link to a Stephen Few blog post.  In researching this topic I revisited the post and see that Chad Skelton was in fact featured in Few’s essay . It seems that Skelton did not just “happen” upon the idea of personalization but was grappling, like so many of us, with ways to entice people to engage with visualizations.

For the record, I think personalized bar charts beat packed bubbles any day of the week.

Jan 202015

 “With great power comes great responsibility”

— Voltaire

— Benjamin Parker (Uncle Ben from Spiderman)


Recently both Ryan Sleeper and Andy Kriebel blogged about donut charts in Tableau.

Figure 1 -- Donut chart courtesy of Andy Kriebel

Figure 1 — Donut chart courtesy of Andy Kriebel

While both of them cautioned about where, when, and how best to use them, I fear many people will ignore the warnings and dig into this sugary, analytically-impoverished chart type and start creating stuff like this.

Figure 2 -- Really bad donut chart.  In fact, it’s just a pie chart with a whole in the middle.

Figure 2 — Really bad donut chart. In fact, it’s just a pie chart with a hole in the middle.


And what fuels my fear?  Ryan and Andy do great work, and they write great blogs.  They rightfully have a lot of influence in the Tableau community.

But with great power — and influence —  comes great responsibility and I suspect that some people will see Ryan and Andy’s work, ignore their recommendations, and apply the following bit of “logic”:

Ryan Sleeper is a Tableau Iron Viz champion and really cool — and he makes donut charts.

Andy Kriebel is a Tableau Zen master and really cool — and he, too, makes donut charts.

I want to make cool vizzes and be really cool; therefore, I should make donut charts.

[Insert face palm here]

Interviewer: So, what do you have against donut charts?  Don’t you think they look cool?

Me: My problem is that donut charts don’t tell you very much.

Interviewer: Yes, but they look cool!

Me [yelling]: You know what else looks look cool?  Pictures from the Hubble telescope.  Vintage electric basses.  Three-dimensional pie charts! Should I festoon my dashboards with these images, just because they look cool?

Interviewer: Fine, explain to me why this chart types doesn’t work, but I’d like to see an alternative that isn’t BOR-ING!

Me:  Okay, allow me to do the following:

  • Explain why donut charts don’t tell you much (or not as much as a bar chart)
  • Present a better alternative
  • Show how to have your cake (not your donut) and eat it, too

Why donut charts don’t tell you much

Consider the chart in Figure 1, above.

I always recommend that people ask the following questions when coming up with a visualization:

  • Do I need different colors?
  • Do I need a legend?
  • Do I need measure labels?

Let’s see what happens when we remove the measure labels:

Figure 3 -- donut chart without measure labels.

Figure 3 — donut chart without measure labels.

The chart does pass some of the “can I figure this out test”.  For example, it’s easy for me to see that West is around one quarter of the way to goal and that East is a little more than half way.  Where the chart fails is with comparison among regions.  For example, can you tell how much closer North is to its goal than West?  This comparison is particularly hard to determine as it’s very difficult to gauge how much longer one arc is than another arc.

A better alternative

I think a bar chart with a goal line is easier to grok.  It tells me more and takes up less screen real estate, too.

Figure 4 -- Bar chart with goal line.

Figure 4 — Bar chart with goal line.

There’s an added advantage in that I can easily see both the progress towards a goal and that the goal is $100,000.

Better yet, suppose the goals were different for each region?  Right now they each have a shared goal of $100,000 but suppose the goal for North is $125,000 and the goal for East is $75,000?  With the donut chart, how will you show the actual goal and the progress towards the goal at the same time?

Why is it easy to compare progress across regions using the bar chart?  I’ve discussed this in length here, but the bottom line is that humans are much better at judging the length of bars than they are judging the area of circles or the lengths of arcs.

But does the chart pass the “no measure labels” test?  Have a look.

Figure 5 -- Bar chart without measure labels.

Figure 5 — Bar chart without measure labels.

While I prefer having labels, it’s pretty easy for me to the following:

  • North is more than twice as long as West
  • East is a little more than half way
  • South is more than a third of the way to goal
  • East is about twice as long as West

In other words,  I can draw conclusions more easily from this chart than the donut chart.

Another Example

Consider the chart below that shows the percentage of confirmed judicial nominees that are women, broken down by president.

Figure 6 – Donut Chart showing Female Judicial Nominees (source: Alliance for Justice)

Figure 6 – Donut Chart showing Female Judicial Nominees (source: Alliance for Justice)

There are some good stories in here but they are buried.  Compare this with a bar chart that contrasts the different presidents and underscores the differences between Republicans and Democrats.

Figure 7 -- Bar Chart showing Female Judicial Nominees (source: Alliance for Justice)

Figure 7 — Bar Chart showing Female Judicial Nominees (source: Alliance for Justice)

I think this is a lot clearer.

But it is, well, boring.

Have your cake and eat it, too

I admit that most of my practice has me building stuff that looks more like it would appear in The Economist than in USA Today, but I do understand that you may need to create something that is eye catching.

And I agree that the donut chart is eye catching, but I hate to sacrifice information for the sake of decoration.

Is there a way to get both?

I think there is.  Let’s work on the first example where we were examining progress towards a goal broken down by region.

Want some sugar?  Try a lollipop chart

Figure 8 -- Lollipop chart

Figure 8 — Lollipop chart

Creating a lollipop chart is easy in Tableau. You create a dual axis chart where both measures are identical but you have a different chart type (in this case a bar chart combined with a circle chart).

Figure 9 – Tableau settings for a lollipop chart

Figure 9 – Tableau settings for a lollipop chart

Try some fun shapes

We can also take the lollipop chart and dress it up with a custom shape, like the one shown below.

Figure 10 -- Combination bar and shape chart

Figure 10 — Combination bar and shape chart

While I prefer the lollipops to the runner, I have no problem with the chart shown above because I don’t have to work hard to see both the distance from the goal and to compare among regions.  That is, I did not fight Tableau’s suggested default chart type but instead took it and dressed it up a bit.


NoDonutEven if you are tasked with having to create visualizations for mass public consumption I urge your to use caution before creating a donut chart. I understand that you may need something that is more visually arresting than a simple bar chart, but take that as a challenge: find a way to make something that looks cool but does not sacrifice one bit of analytical clarity.

And if you do create a donut chart, please look carefully at what Ryan and Andy did (and did not do) in fashioning theirs.

Dec 092014

In Part One of this series I discussed why the Tableau support community is unique and why you should care. In Part Two I shared my thoughts on the early years of the community and how one person in particular set the tone for sharing knowledge and expertise.  In this final post I make recommendations on the things you can do to ensure that the community continues to thrive.

What you can, and should do, to ensure the community thrives

I rely on this community to inspire me, cheer me on, and help me when I need it.

I don’t want to lose this invaluable asset, so I’m going to enlist you to contribute to its wellbeing, assuming you are not already doing so. Here are some things you can do.

Ask for help

If you can’t find what you need through a web search, ask for help as it will help the community as a whole. While counterintuitive, asking for help will generate a discussion that will lead to solutions that will help not just you but others that are having or will have the same problem you have.

And just where should you ask for help?  Tableau’s community forum is a great place to start.  If you look you will see a lot of Zen Masters who have posted questions, not just answers, through the years.

In addition to asking, if you want to observe noteworthy Tableau activity, make sure to check out the Twitter hashtag #tableau and also check out the list of Tableau-related tweeters Andy Cotgreave has assembled here.

Show the love

If someone has helped you or something has inspired you, send them a “thank you” e-mail, launch a tweet, comment that person’s blog, but above all please let the person who helped you know you appreciate what he / she has done (and in my case feel free to send dark chocolate and / or red wine).




Figure 1 -- Beers were free at The 2014 Tableau Conference.  But I appreciate the sentiment.

Figure 1 — Beers were free at The 2014 Tableau Conference. But I appreciate the sentiment.

Cheering each other on is a big reason the community thrives.

Post your work to Tableau Public.

If you create something worthwhile, share it with the world.  Tableau Public makes it easy, and it’s free.

If you recall from Part One, I stated that Tableau Public is a masterstroke in fostering community and visualization excellence in that it provides a free service for people to post their work.  The public will in turn remark on the work, but the really amazing thing is that a Tableau user can download packaged workbooks to see how they work.

Consider this great “how-to” example from Josh Milligan.

Figure 2 -- A great "how to" example from Josh Milligan that anybody can download and dissect.

Figure 2 — A great “how to” example from Josh Milligan that anybody can download and dissect.

Notice the “Download” button in the bottom right corner.  With Tableau Public I can do more than just interact with the viz; I can download the workbook and see how the person built it.

Help others whenever and wherever you can.

You may not be able to pay back the person or people that helped you, but you can help others.  Do not feel pressure to change the world or have the same impact as a Joe Mako or a Jonathan Drummey, but there’s a lot you can do including participating on the Tableau forum, writing a blog, attending a user group meeting (live or virtual), helping a non-profit understand their data, or just commenting on someone else’s work.

With respect to the forum, try “lurking” (just hanging out and observing the various conversations) to see if this might be an outlet for your abilities. If nothing else you’ll learn a great deal.

With respect to blogging, the barrier to entry has never been lower and this is a great way to find your voice and contribute to the community.  Indeed, Andy Cotgreave maintains that if you can have a Google account you can create a blog and publish a post in fewer than three minutes.

Figure 3 --  Dan Montgomery, Paul Banoub, and Anya A'Hearn, and Lewell Loree stopping traffic and evangelizing blogging at the 2014 Tableau Conference.

Figure 3 — Dan Montgomery, Paul Banoub, Anya A’Hearn, and Jewel Loree stopping traffic and evangelizing blogging at the 2014 Tableau Conference.

Do not celebrate or reward mediocre work.

We should, as a community, be working to improve the art and should not reward stuff that isn’t good.  I’m not saying that you should be a jerk (remember, there are no jerks in this community, at least not yet) but if you see something that you know can be better, please let the person – and the world – know what you would do to make it better.

I’ve written about this on several occasions (please see My Problems with a Company’s Iron Viz Competition and Ask These Three Questions.)

Incidentally, people critique my work all the time and I’m grateful for the feedback.  Indeed, if I have any “high-stakes” dashboards I want to publish I will always ask both colleagues and laypeople to review the work before it goes live (please see the “Usability” section of Your Tableau Public Viz is Ugly *and* Confusing.)

Don’t be too hard on yourself

I remember something Joe Mako told me several years ago:

I like Tableau because it allows me to fail faster.

Do not be afraid to fail, and to fail easily and often. It takes time, study, and practice to get good at data visualization and Tableau.  Do not be afraid to post something on Tableau Public and ask for help or criticism.  Most people will offer constructive help and you’ll get better, fast.

I look forward to seeing your work, reading your tweets, and pondering your questions.


Dec 012014

In this continuation from Part One I share my thoughts on the early years of the community and how one person in particular set the tone for sharing knowledge and expertise.  

How did this start?

There were a lot of really great people contributing to the community in Tableau’s early years.  I’ve already mentioned Jonathan Drummey and Richard Leeke.  Others I recall include Alex Kerin, Andy Cotgreave, James Baker, and Russell Christopher.

But there’s one person in particular that I think set the tone and established the precedent for discovering and sharing Tableau knowledge.

Meet Joe Mako

At the 2011 customer conference in Las Vegas, Tableau singled out Joe Mako for responding to an unfathomable number of Tableau forum posts that directly helped hundreds and indirectly helped thousands of people.

And what prompted Tableau to do this? This is a great example of the community raising its voice and recognizing contributions of one of its own.  Several people, including Matt Shoemaker, Richard Leeke, Dan Murray, Mel Stephenson, Tim Costello, and Tom Brown, petitioned Tableau, urging the company to recognize Joe for his incredible contributions.

This citing by Tableau led to the creation of the Tableau Zen Master program.

For the first two years of the program Tableau used the following Venn diagram to show the confluence of skills and temperament that comprise a Zen Master:

Figure 7 -- Generic Zen Master Venn Diagram

Figure 7 — Generic Zen Master Venn Diagram

Here’s what I think would be the appropriate diagram for Joe:

Figure 8 -- Joe Mako Zen Master diagram

Figure 8 — Joe Mako Zen Master diagram

Anyone who has been on a screen sharing call with Joe (and there are probably hundreds of people who have availed themselves of Joe’s generosity) can attest to stunning, fully-fleshed solutions emerging from Joe’s brain.

I’ve spent enough time with Joe to realize it isn’t just Robin Williams-like brilliance but Bruce Lee-type discipline Joe has applied to really understanding Tableau.

Joe is also remarkably kind and reassuring, offering a soothing, Mr. Rogers-like “don’t worry, we’ll figure this out together” encouragement whenever I’ve been stuck and needed help.

The only downside of a screen sharing session with Joe is that you get off the phone and think that “jeez, this guy is smarter than I am, more disciplined than I am, and … he’s nicer than I am” (and I’m a very nice guy.)

We are very lucky to have him in our community.

How did these seeds produce so much fruit?

How did the contributions of Joe and a handful of others lead to such a large, rich community?

I can’t speak for others, but my contributing stemmed from a desire to repay those people (especially Joe) that had given me so much help.

The problem was that I could not pay these people back directly as there was not much I had to offer them, save appreciation and gratitude.*

But I could give back to the community as a whole.  In my case I don’t attempt to answer forum posts in near real time.  This skill is best left to folks like Shawn Wallwork, Mathew Lutton, Grayson Deal, Joe Oppelt, Noah Salvaterra, Joshua Milligan, KK Molugu, and many others that do an amazing job.  I give back through pro bono work and blog posts.  Specifically, in addition to helping out non-profit organizations I try to publish a useful “here’s how you do this” blog post at least once a month.  The posts can take hours to write, but that’s a small price to pay for what the community gives me in return (and I will confess that they do generate interest in my work).

If you are like me you rely on this community to help and inspire you.  I, for one, love having the safety net of knowing that there are literally dozens of great minds that I can tap for help and inspiration.

I’ve already told you what I do to contribute to the community.  In Part Three of this series I’ll provide ideas on what others can to ensure the community thrives.

* Note: Expressing appreciation and gratitude are essential to the community.  I’ll discuss this more in Part Three of this series.

Nov 242014

This is the first in a series of three blog posts that explores why what makes Tableau’s support community so special, why you should care, and what you can do to ensure that the community thrives.

My sincere thanks go to Andy Cotgreave and Jonathan Drummey who reviewed an early draft and provided invaluable feedback.  Their actions exemplify what this community is about.


Anybody recognize that form of user ID?  It’s my CompuServe ID, circa 1985.


Figure 1 — Getting help from a support forum looked like in the Australopithecus era of personal computing.

I bring this up because over the past 30 years I’ve been involved with dozens of different software communities and I’ve never seen anything that matches the quality, creativity, generosity, and, well, love, that surrounds Tableau.

And just what makes me say that, and why should you care?

Let me start with the second question first.

Why you should care

When people ask me why I like Tableau and why I recommend the product I tell them the following:

  • Tableau more often than not allows “mere mortals” to discover what is important in their data, create compelling visualizations, and share these visualizations with others. By “mere mortals” I mean people not steeped in data science or graphic design.
  • If, however, you are not able to figure out what to do there is a community of people at your beck and call that will help you. The community will NOT allow you to fail.
  • This same community will inspire you to do better work.

Examples of the community at work and what makes it unique

Forum Posts

I was at a client earlier this year and we had our collective heads-down trying to find a visualization that would really make the underlying data sing.

The client asked about displaying pie marks on a scatterplot. Although I was almost certain that this would not yield useful insights (my polite way of saying it would look really dumb), I figured we might as well give it a try as it’s so easy to just try stuff with Tableau and see if it yields good results.

Well, it’s usually really easy to just try stuff.

In this instance I was spinning my wheels for a bit so I invoked what I call the Tableau ten-minute rule:

If, after ten minutes of working in Tableau you come to the conclusion that you are not making any progress, see if anybody else has already solved the problem.

So, I typed the following into Google:

“scatterplot with pie marks Tableau”

My first hit was this:



Figure 2 — A snippet for an amazingly cogent response, typical of Jonathan Drummey and so many others who share their expertise freely on the Tableau support forum.

Holy Venn Diagram, Batman!  Not only was this exactly what I needed, but the post contained a wonderfully-written discourse on how Tableau works.  Who takes the time to write stuff like this?

Ah, of course.  Jonathan Drummey:  Tableau Zen Master, Tableau forum contributor extraordinaire, and author of Drawing with Numbers, one of the “must read” data visualization and Tableau blogs.

This experience reminded me of many times that I’ve been flummoxed and I’ve sought help on the forum  One “career-critical” incident occurred just as I was starting out as an independent consultant and I was in a quandary.  I managed to find my post and the attendant response from Richard Leeke (another generous-with-his-time-and-expertise Zen Master) at http://community.tableausoftware.com/thread/111283.


Figure 3 — Richard Leeke, saving my hide at a critical juncture in my career.

I can still remember my relief when I tried Richard’s solution and it worked.  Perfectly.


While the forum posts make the community so helpful, it’s the blog posts that make it so rich.  There are scores of people sharing their solutions and creativity and their influence on me has been profound.

I’ll cite one example.

In mid-2013 I decided to check out the “viz of the day” and see if there was anything good.  I’ll confess that I can be an insufferable snob when it comes to dashboard design and my previous visits to this site had left me unimpressed.

But then I saw this http://www.tableausoftware.com/public/gallery/socialworld


Figure 4 — An example of Kelly Martin’s work

F&*k!  While I wasn’t paying attention a bunch of people really raised the bar on Tableau dashboard design.  Now aware that I was not quite as bad-ass as I thought, I decided to find out who built this particular dashboard and discovered Kelly Martin of VizCandy.

There is so much great work here, and so many useful blog posts.  This combination of quality and quantity is indicative of dozens of the Tableau bloggers that contribute to the community by creating something either useful or beautiful (or both), posting for the world to see using Tableau Public, and then explaining how they did it.

(I won’t attempt to list all of the great blogs and attendant posts, but in early 2014 Andy Cotgreave assembled a list of influential Tableau-related blog posts.)

Tableau Public

Tableau Public is a masterstroke in fostering community and visualization excellence in that it provides a free service for people to post their work.  The public will in turn remark on the work (both praise and brickbats), but the really amazing thing is that a Tableau user can download packaged workbooks to see how they work.

Consider this great example from Mark Jackson.


Figure 5 — A great example of Tableau’s Story Points feature from Mark Jackson.

Notice the “Download” button in the bottom right corner.  With Tableau Public I can do more than just interact with the viz; I can download the workbook and see how the person built it.

I can cite dozens of times where somebody posts something cool that somebody else downloads, dissects, improves, and then re-posts, only to inspire somebody else to repeat the process.

I’ve been part of this “cycle-of-improvement” on several occasions and have downloaded hundreds of workbooks to see for myself how a fellow Tableau author built something wonderful.  I’ve gotten much better at what I do because of this free exchange.

Note: I encourage you to read Andy Cotgreave’s post about why a chart should start, not end, a conversation.  In this article you will find a great example of how three Tableau users found different and important truths in the same data set.

Tableau Employees

When I first started working on this essay in the spring something had gone horribly wrong with the forum: when I conducted a search through Google – or even on the forum itself – I could not find any forum posts.

This was not a good thing; my entire thesis of “if you can’t figure it out yourself, conduct a search on Google” was not going to withstand any scrutiny if none of the forum posts would show up in the search.

I won’t get into the details of what happened but it was an unintended consequence of making a change to the way the underlying support system (Jive Software) had been implemented.

I was irate over what had happened but as much as it was bothering me, it was bothering the folks tasked with making the forums work even more.  These are Tableau employees that care deeply about nurturing the community and I suspect they weren’t sleeping well while this was going on. It took a while, but they fixed it, so major kudos to Tracy Fitzgerald, Dustin Smith, Ross Perez, Patrick Van Der Hyde for their efforts in remedying the problem and in nurturing the online community.

Note: There’s so much more I should write about Tableau employees but I’ve decided to mention just those employees of which I am aware whose work focuses mostly on nurturing the support community.

No Jerks

I mentioned at the beginning of this essay that I’ve been involved with a lot of software communities and they have had more than their fair share of dysfunctional, bordering on toxic, personalities.

Figure 6 –For whatever reason, there don’t seem to be any jerks (at least of which I’m aware) in the Tableau community.

Figure 6 –For whatever reason, there don’t seem to be any jerks (at least of which I’m aware) in the Tableau community.

I have yet to meet any jerks, either in person or online, within the Tableau community.  They may exist, but so far I’ve only met people that were smart, eager to learn, eager to share, and remarkably well adjusted.

I have some ideas on why the community is as functional as it is, and it had a lot to do with the temperament of some of the earliest contributors (and one contributor in particular).

I will share my thoughts in Part Two of this series.

Sep 182014


A dashboard from Radio Free Europe / Radio Liberty has received a lot of views since it was published earlier this week and for good reason: There’s a lot of important information packed into a compelling story.

There’s a lot I like about the dashboard but two things that I believe desperately need to be corrected.

Before going any further you can see the dashboard here.

What I Like and Don’t Like

Here’s a re-sized snapshot of the dashboard.


What I Like:

  • Colors
  • Hovering over a country provides more information about the country.
  • Syria and Iraq are labelled so I can find the focus of the story quickly.
  • The author has presented normalized data in the bottom chart  to show proportion of fighters from a particular country. This is brilliant and important.

What I Do Not Like:

  • There are two different axes at the bottom of each bar chart with very different values. If I don’t look at the axes I would think that Belgium has the same number of fighters per million as Tunisia. This defeats the brilliance of presenting the data in a normalized form.
  • The fighter icon takes away from the gravity of the story as this should not be a frivolous visualization. The visualization should skew more towards The Economist and less towards USA Today (see this post.)
  • The bars are in alphabetical order.

The Makeover

Here’s what I’ve changed.

  • Clicking a country name in one of the visualizations will highlight that country in the other visualization making it easy to find.
  • The axes for the two sets of bar charts at the bottom are consistent.
  • I’ve replaced the fighter icons with labeled bars.
  • You can switch between displaying normalized data (fighters per million) and the number of fighters.
  • The bars are color coded to reflect the same color legend in the top chart.

Click here or the image below to access the interactive dashboard.


Sep 162014

Finally, a good use for packed bubbles!

The Problem

I recently received a query from a client on how to compare responses to one question with responses to another question when both questions have possible LIkert values of 1, 2, 3, 4, and 5.  That is, if you have a collection of questions like this:


How would you show response clusters when you compare “Good Job Skills” against “Likes the Beatles”?

This question is particularly applicable if you are a provider of goods and services and you want to see if there is alignment or misalignment between “how important is this feature” and “how satisfied are you with this feature”.

Note: There’s a Tableau forum thread that has been looking into this issue as well.  Please see http://community.tableausoftware.com/thread/137719.

So, how can we fashion something that helps us understand the data?

Before we get into the nitty gritty here’s a screen shot of one of the approaches I favor.  Have a look to determine if reading the rest of the blog post is worth the effort.


Still reading?  Well, I guess it’s worth the effort.

The Traditional Scatterplot Approach

Consider the set up below where we see how Tableau would present the Likert vs. Likert results in a standard scatterplot.


So, what is going on here?

There are a total of nine Likert questions available from the X-Question and Y-Question parameter drop down list boxes.  Our desire here is to allow us to compare any two of the nine at any time.

The “meat” of the visualization comes from the SUM(X-Value) on the columns shelf and SUM(Y-Values) on the rows shelf where X-Value and Y-Value are both defined as

IF [Wording]=[X-Question] then [Value]+1 END

This translates into “if the selected item from the list is the same as one of the questions you want to analyze, use the [Value] for that question”. Note that [Wording] is the same as [QuestionID] but with human readable values (e.g., “Likes the Beatles” instead of “Q52”)

We use [Value]+1 is because the Likert values are set to go from 0 to 4 instead of 1 to 5, and most people expect 1 to 5.

We can use SUM(X-Value) and SUM(Y-Value) because we have Resp ID on the Details shelf.  This forces Tableau to draw a circle for every respondent.  The problem is that we have overlapping circles and even with transparency you don’t get a sense of where responses cluster. Yes, it is possible with a table calculation to change the size of the circle based on count but we’ll I’ll provide what I think is a better approach below.

A note about the filters: The Question filter is there to constrain our view so that we only concern ourselves with Likert Scale questions.  It isn’t necessary but is useful should we be experimenting with different approaches.  The SUM(X-Value) and SUM(Y-Value) filters remove nulls from the view.

Packed Bubbles to the Rescue

I’m not a big fan of packed bubbles (see this post) but for this situation we can use them and get some great results, as shown below.


I’ve made a couple of changes to the traditional scatterplot visualization the most important being SUM(X-Value) and SUM(Y-Value) are now discrete and we get a trellised visualization instead of a continuous axis.  Note that I had to change the sort order of the Y-axis elements so that they appear in reverse order (5 down to 1).

I got the packed bubbles by placing CNTD(Resp ID) on the size button. This assures that each bubble is the same size and triggers Tableau’s packing algorithm.

Note that I also added an on-demand “Drill down” so that you can color the circles by different demographic dimensions.

I’ve experimented with this with some large data sets and Tableau does a great job with packing the bubbles intelligently.

What About Trend Lines?

Since we are using discrete measures on the rows and columns shelves we cannot produce trend lines.  When I first started this project I experimented with more traditional jittering and was able, with a fair amount of fuss and bother, to produce this.


A special thanks to Jeffrey Shaffer who provided a link on how to create pseudo-random numbers in Tableau (thank you, Josh Milligan).

I prefer the example that doesn’t require the jittering, but if you need to trend lines or if you prefer the jittered look I’ve included the example in the downloaded packaged workbook (see below).

It also occurred to me that the trend line would be based on the jittered values and not the actual values.  The same workbook contains a “home grown” trend line based on the actual values (courtesy of Joe Mako). It turns out the jittered trend line is almost identical to the non-jittered trend line so I suspect you won’t need to take the “home grown” approach.


I received a number of comments here and on LinkedIn about the “drill down / break down” capability and that it is hard to see the percentage of dots by category.  For example, if you break down by generation do the dots for one generation cluster more in one part of the trellis than in others?

I thought that in this case having a different-colored bubble per category where the size of the bubble was proportionate to the percentage of responses within that category made sense.

Size by Category

I thought building this would be easy, but I needed to call in the heavy artillery (Joe Mako).

I’ll blog about the solution later. In the meantime the packaged workbook below contains this additional approach.