Data Dissection: Comparing Sport Skills Using Radial Bar Charts (Aparna Shastry)

Chris Nguyen
6 min readDec 29, 2020

For my very first Data Dissection, I was searching through the various authors featured on the Tableau Public website at this time (December 2020). One visualization I particularly liked was Aparna Shastry’s MM-Wk19-Toughest Sport by Skill from the 2018 Makeover Monday Week 19 challenge. She uses radial bar charts to compare the skill difficulty of different sports as rated by ESPN. Here’s what her visualization looks like:

Radial Bar Chart Comparison by Aparna. Link to interactive viz.

The use of colors and background was very consistent and appealing to me. The use of the radial version of bar charts made the charts very compact too.

But how would I recreate this chart? Radial bar charts are not a default chart type and when I looked into how to create one, they turned out to be very involved! So let me walk you through how to create a radial bar chart like Aparna did and all the steps involved behind them.

For reference, I watched a few Youtube tutorials on radial bar charts in Tableau. The best one I found was this tutorial by Data Embassy:

Simple Radial Bar Chart Tutorial

So let’s get started on this viz recreation!

Radial Bar Chart Steps

  1. First things first, you need to download the data for this chart. It can be found here.
  2. Then you need to transpose the data to put it in a form that Tableau likes. The raw data looks like this:
Wide, fat data

So it is in a wide, fat format. Helpful for human readability but not so much for Tableau. Tableau would prefer the long, skinny format of this data for filtering so use something to transpose the data. I used Python to do that but you can use whatever to end up with this:

Long, skinny data

You should go from 60 rows of data to 600 rows (60 sports x 10 skills).

3. Now you’re finally ready to load the data into Tableau. Do it, but then union the data to itself under Data Source. You’ll end up with 1200 rows total now.

Union data to itself

4. Now that we have all the data prepwork we need, we can start creating the calculated fields we need! We need to define the path along which an arced bar can move along. Create a Path field and define the formula as:

CASE [Table Name]
WHEN {MIN([Table Name])} THEN 0
ELSE [Values]*270/{FIXED [Sport]: MAX([Values])}
END

What does this do? It classifies the endpoints for the radial bar for each skill value for a sport, either 0 or 270 for the degrees it can go up to. Remember how we unioned the data to itself earlier? We did that so that one copy of the data is at 0 and the other copy is at 270. This calculation ensures that but also calculates it differently for each sport, hence the FIXED Sport parameter in the second LOD. (Note that this is slightly more complicated that what Data Embassy did in his tutorial since he had a simpler data set but it’s really only that one difference.)

5. Create a bin for Path using a size of 1.

6. Create a fixed value of pi for the Pi field. You can use a calculation but a fixed number value is good enough (I set mine to 3.14159).

7. Create the field “Rank Radial” with the following calculation

RANK_UNIQUE(SUM([Values]), ‘asc’)

And make sure that the Default Table Calculation is set to use Skill.

8. Create the field “ Rank Max” with the calculation

WINDOW_MAX([Rank Radial])

computed using the Path(bin).

9. Next, change the mark type in the Marks pane to Line and drag Path(bin) over to Path. Drag Skill to Color. Make Sport a filter and choose one of them to start out with (I chose Boxing).

10. Next, create the field X. X is the calculated x values that we use for the curved bars, which is why we need the cosine function.

COS((INDEX()-1)*[Pi]/180)*[Rank Max]

11. If you have x values, you’re gonna need y values (in a 2-D plot at least)! Create the Y field using the sine function instead of cosine. Now we have what we need to calculate everything along the curved line of the radial bar chart.

SIN((INDEX()-1)*[Pi]/180)*[Rank Max]

12. That’s it for calculations! Now we need to put them together along the columns and rows to create the chart. Put Y on Columns and X on Rows. Click on the settings for each field and go to “Edit Table Calculation…”. We need to change or make sure of what each Nested Calculation is using.

Under X/Y, make sure it is being computed using the Specific Dimensions of Path (bin).

Under Rank Max, make sure it is being computed using the Specific Dimensions of Path (bin).

Under Rank Radial, make sure it is being computed using the Specific Dimensions of Skill.

13. You should have this beautiful chart now!

14. From here, it’s just cosmetic changes. Here’s what my final radial bar chart looks like:

As you can see, I’ve set up labels to match what Aparna did. I also added in Min(0) as a dual axis on Rows (mark type: circle) to get the Sport label in the middle of the chart. That’s pretty clever. By myself, I would have done the “dumb” thing and just created another sheet with the sport name as a text label and moved it as a floating viz on top of this one.

To get the comparison between sports like in the original visualization, just duplicate the chart, set them side-by-side on a dashboard, and let the user select which two sports to compare using filters.

Final Thoughts

I decided to compare the radial bar chart to a standard horizontal bar chart, which you can find here. Comparing the two, I think the radial bar chart is prettier, more compact, and looks great on “infographic” dashboards or visualizations. But the arc makes it hard to compare across skills because each bar has a different radius to it and you have to follow the whole bar to the end. This causes some weird visual tricks, such as the Endurance skill bar looking slightly longer than the Power skill bar even though it isn’t. For dashboards used for business decisions, I would still prefer a simple bar chart.

Standard vs Radial Bar Chart. Link to interactive viz.

And then of course, there’s the big, giant elephant in the room: the radial bar chart is far, FAR harder to create than the standard bar chart. It took me hours and multiple tutorials to figure out how to make one for this data set and use case (having just one setting off totally ruins the chart) for the first time. It took me seconds to create the standard bar chart.

A worthwhile exercise to figure it out and compare though! A successful dissection of this data visualization and a step-by-step reproduction of the end product. Couldn’t have asked for a better first run for my Data Dissections!

--

--