今回のテーマはRadial Bar Chartです。
以下のViz作成を通して解説します。

以下のブログを参考にしました。
使用したデータはMakeoverMonday 2019/W4から取得できます。
Tableauワークブックは以下からダウンロードできます。
【モチベーション】
まず、今回取り扱ったデータの説明をします。
このデータはイギリス首相官邸街周辺の、2017年の電力使用量に関するデータです。
今回は可視化の目的を「電力使用量が増えたタイミングはいつか」とします。

こういうデータを可視化する際に、最初はBar ChartかLine Chartになるのかなと思います。
仮に日付と時間、両方の粒度で見るとしたら、以下のようになるでしょうか。

この時点での問題点は「グラフの両端、中央にピークがあるのは分かる」ものの、一方で「これが何月何日頃なのか知るためには、頭の中で軸への補助線を引いて、その上で軸を読み解かないといけない」ことです。
もう一つの問題点は、データの粒度が細かすぎて、軸そのものを読み解くのが難しいことです。
こういう場合、以下2点が取りあえず解決策として思い浮かぶかなと。
1.Vizを分ける:例えば日別のワークシートと、時間別のワークシートを作成し、分けて見えるように設計する。
(フィルターアクション or セットアクション前提です)
2.Heat Mapを試してみる
(両方ともQuickに作ったものなので、細部は適当です)
1の設計だと、先に挙げた問題点2つが解消されている感じですね。電力使用量が多かった日の時間帯分布も見やすいです。
一方で以下の問題が発生します。
・ワークシート2つを必要とすることからスペースを要求すること、
・ダッシュボードアクション前提なので、静的にVizを作る必要がある場合は辛い。
そこでRadial Bar Chartで、データの並び方(横並びから円形並び)を変えることにより、省スペースかつ静的でも直感的にできます。

Radial Bar Chartを用いた場合、電力使用量のピークが何月何日ごろか一目瞭然です。
例えば6月20日ごろのピーク(Viz中央下段)は「データ点から軸に補助線を引いて、読み解く」ことなしに、一瞬で分かります。すぐそこにJunとJulって書いてあるので。
また時間のデータを「時計」のような形で表示できるので、「データのもつイメージ」を活用し、より「直感的」にVizを作成できます。
以上がRadial Bar Chartの一例です。
ちなみに「視覚的な印象」と「数値とイメージの紐づけ」の話は以下の記事でも触れていますので、ご参考まで。 Tableau Note: TableauでRadial Chartを作る
【Radial Bar Chartの作り方】
いつものように、Self-Unionです。

まず、以下の計算フィールドを用意します。
Measure
SUM([Electricity Used (kwH)])/COUNTD([Table Name])
DateTime
MAKEDATETIME([Date], [Time of day])
PATH
IIF([Table Name]="Energy Use Number 10 Downing St 2017.csv",0,1)
DateTimeは、データが別カラムでそれぞれ日と時間をもっていたので、まとめようというだけです。
PATHについては、今回の場合はUNIONしたテーブルに整数ラベルをつけよう、程度です。
今回の場合、DateTimeごとにRadial Barを作成したいので、そのための計算フィールドを作成します。
Minimum Granularity
[DateTime]
そして以下の計算式を作成します。
INDEX
INDEX() - 1 // Minimum Granularityを使用して計算
Length Normalized
[Radial Inner] // where line starts: base point + IIF( ATTR([PATH]) = 0 , 0 , [Measure] / WINDOW_MAX([Measure]) * ([Radial Outer] - [Radial Inner])
)
Angle (Radian)
[INDEX] / WINDOW_MAX([INDEX]) * 2 * PI()
+
RADIANS([Rotation (Degree)])
//Minimum Granularityを使用して計算
ここで、Radial Outer、Radial Inner、Rotation (Degree)はそれぞれパラメータです。
Length Normalizedについて。
Radial Inner/Outerは「Radial Barの始点/終点を円の中心からどのくらい離すか」のパラメータです。
[Measure] / WINDOW_MAX([Measure])により、Measureを[0,1]にスケーリングします。
そこに([Radial Outer] - [Radial Inner])をかけることにより、Radial Barの長さをコントロールしています。
Angle (Radian)について。
INDEX / WINDOW_MAX(INDEX())は、ざっくりと言えば「あるRadial Barの順番 / Radial Barの総数」です。
これに2π = 360°をかけることにより、全体に対する位置(rad)を出しています。
パラメータRotation (Degree)は「1番目のRadial Barをどこから始めるか」を制御します。今回の場合、12時方向を始点としたかったので、-90°にしています。
これら計算を利用して、以下の計算フィールドを作成します。
X
[Length Normalized] * COS(-[Angle (Radian)])
Y
[Length Normalized] * SIN(-[Angle (Radian)])
最後に、下図のように設定すれば完成です。
背景画像については、マップ→背景イメージを使用しています。
X、Yは±0.9で軸範囲を固定しています。


Radial Bar Chart作成方法、いかがでしたか。次回はRadial Stacked Bar Chartの作成方法についてを予定しています。
ご質問等はTwitter、Linkedinへよろしくお願いします。