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

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.

4 COMMENTS

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.