Tuesday, January 16, 2018

Creating Radial Bump Chart

Bump Chart is used to display the evolution of ranking changes along time. Sometimes it is also used to compare ranks in a category across dimension members.

And it's usually horizontal along time. The chart can be very wide.

In the concern for mobile device display where horizontal space is much reduced, I thought of creating a radial bump chart.

All of this happened in the 2nd week of 2018 MakeoverMonday viz design, which is comparing the importance of characteristics in a romantic partner per nationality. I liked the bump chart design of Yanning Wang very much. The only thing that I feel not so satisfactory is that it may be too wide for mobile devices.

Initially I created a chart that purely compares ranks among 6 factors in evaluating romantic partners. It looks great and received warm feedback from my social media. Maybe it's the topic that touched everyone. Here it is:
It reminds me of the sugar-coated haws back in China, a popular fruit candy. I might call this sugar-coated haws chart :).
Later on, a friend suggested that the percentage can be used for the bubble size. That's a great idea for showing both ranks and percentages, which is another use of the bump chart, as stated in Ken Flerlage's article. So here is another variation of the chart:
So for each country, we can see not only the ranking of popularity in 6 characteristics, but also what is the percentage of people for each of the 6.

The key to implement the chart is to calculate the coordinates of each data mark. Initially, I wrote a 20-line case statement for either of X and Y, like the one suggested here. Later on I found a more scalable approach for the calculation (compute using Nationality):
  • Xaxis Unit: COS(0.5*PI()-(INDEX()-1)*2*PI()/SIZE())
  • Yaxis Unit: SIN(0.5*PI()-(INDEX()-1)*2*PI()/SIZE())
For the coordinates, I created this formula so that the highest ranked data marks are located at the outer most circle (This requires nested table calculations: [Xaxis Unit] computes using Nationality and [Rank %] computes using Questions):
  • Xaxis: [Xaxis Unit]*(8-[Rank %])
  • Yaxis: [Yaxis Unit]*(8-[Rank %])
Voila, that's the chart for today. Click the images to go to the interactive version.

[Update: Added sorted version]
I would like to sort Nationality dimension based on the highest percentage of the first importance. But we can't sort a dimension based on a measure of table calculations. Then I have to resort to Rank() to calculate the coordinates instead of Index(). The result is as follows:
Now we can gain some more insights in that all the northern Europeans are clustered together. Very likely due to the fact that they have similar cultures. You can click on the image to download the workbook.

1 comment:

  1. I might not be familiar with this kind of viz , because I first was wondering whether the First feature was the one outside or inside. It makes more sense with the size of the bubble, but still need to think about it twice for my own understanding.

    thanks for your contribution here anyway.

    ReplyDelete