TableauでRadial Chartを作る

最終更新: 2019年6月22日


今回のテーマは「Radial ChartをTableauで作る」です。

以下のViz作成を通して解説します。


以下のブログを参考にしました。

http://toanhoang.com/tableau-rings/

使用したTableauワークブックは以下からダウンロードできます。使用データはSample Super Storeです。

https://public.tableau.com/profile/yoshitaka6076#!/vizhome/BlogRadialChart/RadialChartExample?publish=yes

【モチベーション】

身も蓋もないですが、基本的にはRadial ChartよりもBar Chartの方が良いとされています:

・曲線の比較はそもそも難しい

・数字のスケール感をつかみにくい(Pie Chartが3つ以上の比較に向かないのと同じ)

The Big Book of Dashboardsでも論じられていましたが、こちらのBlog記事が簡潔に問題点を示しています。

https://www.datarevelations.com/donutsbadcompare.html

一方でメリット例は以下があげられます:

・ちょっとファンシー(分かりやすさは大事ですが、一方でImpressiveさも大事なときがありますよね)

・例えば時間のような「一周する」数値を用いる場合には、このような可視化は「数字の持つイメージ」と紐づけやすくなります。

まとめると、Bar Chartは「数字の比較」に優位があります。

Radial Chartは「視覚的な印象」と「数値とイメージの紐づけ」に優位がある、といったところでしょうか。


【Radial Chartの作り方】

こういう曲線系の例に漏れず、まずはSelf-Unionからはじめます。


まず、以下の計算フィールドを用意します。

Measure

[Sales]

Dimension

[Sub-Category]

PATH

IIF([Table Name] = "Orders",1,[Bin Size])

ここで[Bin Size]は整数型のParameterです。一旦は270に設定します。

この[Bin Size]が、一番長いBarの終点での角度を指定します(今回は270°)。

また、PATHでBinを作成します。

次に、以下の計算式を作成します。

Max Value Within Dimension

WINDOW_MAX(SUM([Measure]))

Max Value within Path

WINDOW_MAX(SUM([Measure]))

ここでそれぞれについて、下図のように表計算を設定します。

(分かりやすいように明示的に詳細レベル、計算をやり直すディメンションを指定していますが、表計算に慣れている方はこの辺りは適当で大丈夫です)

Max Value Within Dimensionについて、Dimension毎のSUM([Measure])の、Dimension間での最大値を返します。今回のデータでは、Dimensionが"Phone"のSUM([Measure])となります(要は各Barの長さの最大値)。

Max Value within Pathについて、これは各DimensionにおけるSUM([Measure])の最大値を返します(要は各Barの長さ)。

重要なのはPATH(bin)でWINDOW_MAX()を実行し、それをDimensionで再計算させることにより、それぞれのDimensionのアイテムのSUM([Measure])を出力させていることです。

次に、以下の計算式を作成します。

Step Size

[Max Value within Path] / [Max Value Within Dimension]

RANK

RANK_UNIQUE([Max Value within Path],"asc") //Dimensionを使用して計算

Step Sizeは、用はDimensionの各アイテムについての、最大のBar長さに対する、各アイテムのBar長さの割合を示しています。

今回の場合はPhoneのStep Sizeは「100%」になり、FastenersのStep Sizeは「1%」くらいです。

RANKについては計算式通りです。

最後に、以下の計算式を作成します。

INDEX

INDEX() - 1 //PATH(bin)を使用して計算

X

-COS([INDEX]*PI()/180*[Step Size] + RADIANS([Rotation]))*[RANK]

Y

SIN([INDEX]*PI()/180*[Step Size] + RADIANS([Rotation]))*[RANK]

ここでRotationは整数型のParameterです。Radial Chartの始点の角度を決めます。


最後に、下図のように配置すれば完成です。

このとき、PATH(bin)に「欠損値を表示」させることを忘れないでください。


ちなみに、Rotationを0、Bin Sizeを180にすると以下のようになります。


Radial Chart作成の大筋は以上です。

【追記:数値にあわせてBarの長さを変えたい場合】

これはMakeoverMonday 2019/W7のお題なのですが、8時間で360°、6時間で270°にしました。

このケースのように「360°を与える基準値を用意したい」場合があると思います。

ちなみにWorkbookはこちらから


その場合には、以下の3ステップを踏みます。


1.パラメータBin Sizeの値を360に設定する

すると、以下のようになります。最大値のBarがぐるっと1週します。


2.パラメータ「Max of Bar」を作成する

今回の場合は以下のように設定します。8時間(28,800秒)で360°を想定しています。

作成するVizに合わせて数値を任意で設定してください。


3.計算フィールド「Step Size」を更新する

以下のように更新します。


[Max Value within Path]/[Max Value Within Dimension]

*

([Max Value Within Dimension] / [Max of Bar])


補正項である [Max Value Within Dimension] / [Max of Bar] を掛けました。

この式の意味は

  • [Max Value Within Dimension]の値で360°を与えるように設定したので

  • [Max Value Within Dimension]を[Max of Bar]で割ることにより、[Max of Bar]に対する割合を計算させ

  • この割合により「360°に対して何度になるべきか」をコントロールする

という形になっています。

言い換えれば、度数のコントロールがパラメータ[Bin Size]から[Max Value Within Dimension] / [Max of Bar] に移し替えられた形です。


【最後に】

Radial Chart作成方法、いかがでしたか。次回はRadial Bar Chartの作成方法についてを予定しています。その次はRadial Stacked Bar Chartです。

ご質問等はTwitter、Linkedinへよろしくお願いします。

#Tableau

© 2023 by Actor & Model. Proudly created with Wix.com