I saw the following data visualisation and thought that I had to create it, but once I created this I had no idea what I would call it. Baseball Stitches, Chevron Circle, Arrow Pie Chart, Arrow Doughnut and a host of others suggested by the community. As such, I settled on the Arrow Doughnut Chart, this I am sure will change of course.
Note: This is an alternative type of data visualisation, and sometimes pushed for by clients. Please always look at best practices for data visualisations before deploying this into production.
Data
Load the following data into Tableau Desktop / Public.
Country,Value,Link
United States,0.55,1
United Kingdom,0.8,1
France,0.25,1
Once your data is copied into Tableau, right-click on the data source and click on Edit Data Source… with the Data Source Editor open, paste the following, scaffold.
Link,Path,Position
1,1,1
1,360,1
1,1,1.2
1,360,1.2
1,1,1.4
1,360,1.4
Note: If you are using Tableau 2020.2 or great i.e. have access to new Relationship Model, you will need to double-click on the originally pasted data source to open up before pasting in the Path Data.
Make sure that you are using an inner join and the Link column is used to link the two data sources.
Note: we need two records for each Metric as we are going to be drawing lines and using densification to get more points on our canvas. For more information, check out our article on Data Densification.
Calculated Fields
With our data set loaded into Tableau, we are going to create the following Calculated Fields and Bins:
Create Path (bin)
- Right click on Path, go to Create and select Bins…
- In the Edit Bins dialogue window:
- Set New field name to Path (bin).
- Set Size of bins to 10.
- Click Ok.
Index
INDEX()-1
TC_Values
WINDOW_MAX(MAX([Value]))
TC_Position
WINDOW_MAX(MAX([Position]))
Zero
0
X
SIN(RADIANS(([Index]+IIF([TC_Position]=1.2,1,0))/WINDOW_MAX([Index])*360))*[TC_Position]
Y
COS(RADIANS(([Index]+IIF([TC_Position]=1.2,1,0))/WINDOW_MAX([Index])*360))*[TC_Position]
Color
IF [Index]/WINDOW_MAX([Index]) < [TC_Values] THEN
WINDOW_MAX(MAX([Country]))
ELSE
"Grey"
END
Size
IF [Index]/WINDOW_MAX([Index]) < [TC_Values] THEN
1
ELSE
0
END
So now that we have created a lot of Calculated fields, we will now put this together into a Worksheet.
Worksheet
We will now build our first worksheet:
- Change the Mark Type to Line.
- Drag Country to Columns.
- Drag Path (bin) onto Columns.
- Right-click on the object, ensure that Show Missing Values is checked.
- Drag this object onto the Detail Mark.
- Drag Position onto the Path Mark.
- Right-click on this object and change this to a Discrete Dimension.
- Drag X onto Columns.
- Right-click on the object, go to Compute Using and select Path (bin).
- Drag Y onto Rows.
- Right-click on the object, go to Compute Using and select Path (bin).
You should now see something like the following:
Now we will adjust the data visualisation:
- Drag Color onto the Color Mark.
- Right-click on the object, go to Compute Using and select Path (bin).
- Drag Size onto the Size Mark.
- Right-click on the object, go to Compute Using and select Path (bin).
- Drag Zero onto Rows.
- Change the Mark Type of SUM(Zero) to Text.
- On the bottom right-hand corner you should see 3 nulls; click on this and select Show data at default position.
- Drag Value onto the Text Mark.
- Change the Aggregation type to Max.
- Change the format to Percentage.
- Right-click on SUM(Zero) in Rows and select Dual Axis.
Now you will have the following:
Now we will adjust the cosmetics:
- Hide the Head Axis.
- Hide the Grid Lines.
- Hide the Zero Lines.
- Edit the Color.
- Edit the Size.
- Edit the Text size.
and here we go…
and boom we are done, this was a fun blog and you can see my version of this visualisation on Tableau Public at https://public.tableau.com/profile/toan.hoang#!/vizhome/ArrowDoughnutChart/ArrowDoughnutChart
Summary
I hope you all enjoyed this article as much as I enjoyed writing it and as always do share the love. Do let me know if you experienced any issues recreating this Visualisation, and as always, please leave a comment below or reach out to me on Twitter @Tableau_Magic.
If you like our work, do consider supporting us on Patreon, and for supporting us, we will give you early access to tutorials, exclusive videos, as well as access to current and future courses on Udemy:
- Patreon: https://www.patreon.com/tableaumagic
Also, do be sure to check out our various courses:
- Creating Bespoke Data Visualizations (Udemy)
- Introduction to Tableau (Online Instructor-Led)
- Advanced Calculations (Online Instructor-Led)
- Creating Bespoke Data Visualizations (Online Instructor-Led)