Make Your Dashboard Stand Out — Likert Chart (Part 2)
By: Memphis Meng
Tags: Data Visualization, Tableau, Dataviz, Artofdata, Likert Scale

Image by Tableau.com

Make Your Dashboard Stand Out — Likert Chart (Part 2)

To me, Tableau is the only kind of tool that allows me to do data science like an artist. However, there will be no fun if everyone does the same visualization with Tableau. This article is one episode of my series “Make Your Dashboard Stand Out” which provides you with some brilliant but not default visualization ideas. If you are new to me, do check out the following articles:

(TO BE CONTINUED)

Today, we are going to continue our exploration of Likert Chart.

Ideas

From Part 1, I have already introduced that Likert Chart is a type of stacked bar chart that visualizes the distribution of survey respondents’ likelihood or attitudes towards the survey questions. And sometimes, we might want to see what side the surveyees are more inclined if the answer options are roughly binary. In this case, Butterfly Chart is in good use.

As one important variant of Likert Chart, it displays the data series where it is divided into 2 parts side by side. It gives a quick glance at how the data is skewed so that we could do further analysis about, for example, people’s sentiments or attitudes on the survey objects.

A basic Buttery Chart (Source: https://www.manageengine.com.au/analytics-plus/help/chart/butterfly-charts.html)

And in this article, I am going to show you how our existing Likert Chart could be displayed as a butterfly.

Photo by Vivek Doshi on Unsplash

Implementation

Basically, the implementation of Butterfly Charts is a process to get our hands dirty by creating a bunch of new calculation fields. To better demonstrate my thoughts, I will begin with a table that will contain all new fields.

Image by Author

The first thing we need is undoubtedly the number of respondents to each option of the questions. Our following operation will be mostly based on this fundamental field.

Image by Author

Before we move on, let’s take a look at our final work so I can better explain. In my opinion, those people who enjoy should stand opposed to the others who do not, in spite of their degree. However, because of the existence of the neutral option in all the questions, we can simply separate this group into 2 sets and each of them stands with different sides.

Image by Author

To do so, we need to create the next 2 measures: “Negative Score” and “Total Negative Score”. The main function of “Negative Score” is to separate the group of answers that are “Neutral”, so that “Total Negative Score” can get the total amount of people who are supposed to be reflected on the left on the 0% scale.

Negative Score: IF [Preference Level] < 3 THEN 1

ELSEIF [Preference Level] = 3 THEN 0.5

ELSE 0

END Total Negative Score: TOTAL(SUM([Negative Score]))

Note that the declaration of “Negative Score” is optional when there is no “Neutral” option. You can simply accumulate the count number of the people who selected a negative answer to get a “Total Negative Score”. Moreover, “Total Negative Score” needs to be computed using Pane(down).

Image by Author

Thirdly, we have to sum up the total amount of respondents to each question. That is because we need an entire view of our data instead of the people who responded negatively.

Total Score: TOTAL(COUNT([responses.csv]))

Again, it should be computed using Pane(down). (Image by Author)

With that being done, we can easily get the portions of respondents choosing different answers in each question. You shouldn’t be worried that if all you can see is 0’s because the values in this column shall always be between 0~1, and you might probably like to conform its format to percentage as a better way of display.

Percentage of Total Size: COUNT([responses.csv]) / [Total Score]

And then, because the bars won’t start from the beginning of the scale, so it’s necessary to have another measure to record where it should start. My workaround is to imagine the bar is starting from the 0% scale, and the leftmost location (starting point of a bar) it goes should be as far as the “Total Negative Score” shows.

Gantt Start: -[Total negative score] / [Total Score]

After this, we can get the starting points of different groups by stacking the percentage respectively:

Gantt Percent: PREVIOUS_VALUE([Gantt Start]) + ZN(LOOKUP([Percentage of Total Size], -1))

Image by Author

Alright! We’ve got everything for a Butterfly Chart now. Let’s see what we can do to aggregate it.

There’s one thing that I should have let you know earlier: as long as the calculation field uses table calculation, you should always change its default computation to using “Preference Level”.

Image by Author

Then, as soon as you drag “Preference Level”, “Gantt Percent”, “Genre” respectively to Color, Columns and Rows, everything is all set.

Image by Author

Before I go…

You made it! In this 2-part series, I’m pretty sure that you have already seen the beauty of Likert Chart. Now it’s time for you to be creative and become a data-viz storyteller!

For the details of my work, feel free to check it out here ⬇⬇⬇:

https://public.tableau.com/app/profile/memphis4346/viz/LikertChart_16263693757630/divergent?publish=yes