見出し画像

私の場合…WOW2024 Week52

2024年最後のWOWは「幹葉図」でした。
見たことはありましたが、どういう意味を表すグラフなのかはよく理解していませんでした。もちろん、Tableauで作るのは初めてです。
ネットで調べると、統計検定3級に出てくるようで統計の世界ではポピュラーな可視化表現のひとつのようです。

▼今回のお題
https://workout-wednesday.com/2024w52tab/

可視化のルールは難しくありません(お題のページに記載があります)。
幹:10の位の値
葉:1の位の値
→「52」の場合、「幹:5 葉:2」 となります。
ここから分かることは、州ごとの注文数を計算した後、10の位と1の位に分解する必要がある、ということです。
この分解方法にいろいろな方法がありそうです。
私の方法だと少し手順が多くなるのであまりスマートではない気がします。
もっと合理的な方法があると思うので、ぜひ、他の方のシートも覗いてみてください。

といいつつ、以下、私の場合の手順です。


1.全体像をながめる

・2023年と2024年が左右に配置、色分け→Index関数か?
・葉の部分は中心から左右に昇順に整列
・幹の部分は、下に向かって昇順に整列、かつ、データがない行は空白(例:1→2→空白→空白→5)
・幹の部分は左右のデータの数によって太さが変化
・「Ship Mode」「Category」「Sub-Category」でフィルター

2.必要なデータだけを読み込む

今回、使用するのは2023年と2024年だけなので、データを読み込む時に必要なデータだけに絞っておきます。

「データソース」の画面で画面右上にある「フィルター:追加」をクリックします。
「データソースフィルターの編集」画面で「追加」ボタンをクリックし、「Order Date」を選んで「OK」をクリックします。
「年」を選んで「次へ」をクリックし、「2023」と「2024」にチェックを入れて「OK」をクリックします。もう一度「OK」を押して、データの読み込み完了です。

3.州別の注文数量を計算する

新しいシートを開きます。
左側のデータペインから[State/Province]を「行」に配置します。
続いて[Order Date]を「列」に配置します。(自動で不連続:青色の年になる)
次に[Quantity]をシート上の「Abc」と表示されている部分にドロップします。(自動で合計になる)
州別・年別の注文数量が計算されました。

これにフィルターを加えていきます。
左側のデータペインから[Ship Mode]を「フィルター」に配置します。
フィルターの編集画面で「すべて」をクリックして、すべての項目を選択した状態にして「OK」をクリックします。
[Category][Sub-Category]も同様にフィルターに配置します。
次に、フィルターにある[Ship Mode]を右クリックし「フィルターを表示」にチェックを入れます。
[Category][Sub-Category]も同様に右側に表示させます。
右側にあるフィルター情報の[Sub-Category]の「▼」をクリックし「関連値のみ」にチェックを入れます。
※こうすることで、[Category]で選択したカテゴリーに属するサブカテゴリ―だけがフィルター情報として表示されるようになります。

お題に合わせて以下条件でフィルターしてみます。
・Ship Mode:First Class
・Category:Office supplies
・Sub-Category:Strage
幹葉図と同じデータが表示されていることを確認します。

お題のVizと同じ条件でフィルターした状態

今回の幹葉図では、州の情報を「行」や「列」に配置できないので、州別・年別注文数量の計算式を作る必要があります。
「計算フィールドの作成」から新しい計算式を作り[Order Quantity by State]と名付けます。

//Order Quantity by State

{ FIXED [State/Province],DATEPART('year', [Order Date]):SUM([Quantity]) }

[Order Quantity by State]をシート内の数量が表示されているエリアにドラッグするとグレーの四角が表示されるので、そこにドロップします。
州ごとに「Quantity」と「Order Quantity by State」が2行で表示されます。
今回は「Order Quantity by State」の方を使ってグラフを作っていきたいのですが、上下で合計数が異なっています。

上下で合計値がちがう!

お題のVizと同じ数値なのは「Quantity」の方、、、FIXED計算で州と年で固定したのになぜ?????となりました。
しばらく、計算式を見直したりいろいろ試してみた挙句にひとつのことに気づきました。
クエリパイプライン!!!
Tableauでは、度々ぶち当たるルールです。
「私の場合…」シリーズでもWOW2024 W48で一度取り上げています。
クエリパイプラインについては、いろんな人が分かりやすく解説しているので、ここでは詳細は割愛します。
Tableauの公式ヘルプもあります。(https://help.tableau.com/current/pro/desktop/ja-jp/order_of_operations.htm

「Quantity」と「Order Quantity by State」の合計値が違うのは、Tableauの操作順が、ディメンションフィルターよりもFIXED計算が優先されることになっているからです。
先にシップモードやカテゴリーでフィルターされた情報を、州別・年別に計算してほしいので、ディメンションフィルターを何とかFIXED計算より先に実行されるようにしたいです。
こんな場合は、「コンテキストフィルター」です。
クエリパイプラインでは、コンテキストフィルターはFIXED計算よりも上に位置している最強のフィルターなんです。

普通のフィルターをコンテキストフィルターに変身させるのはとても簡単です。
「フィルター」にある[Ship Mode]を右クリックして「コンテキストに追加」を選択します。ピルの色が青からグレーに変わります。
[Category][Sub-Category]についても同様にコンテキストに変えます。
そうすると、「Quantity」と「Order Quantity by State」の合計値が同じになります。
これで基本的な準備は完成です。

コンテキストフィルターとして設置

3.「幹」と「葉」のデータをつくる

今回のテーマ、幹葉図の肝となる部分です。
10の位と1の位をどうやって分離するのか、ですが。私の場合、州別の注文数をいったん文字列に変更して、左から1つ目、右から1つ目を抽出しました。

幹のデータ
「計算フィールドの作成」から新しい計算式を作り[Stem]と名付けます。

//Stem

IF [Order Quantity by State]<10 THEN '0'
ELSE LEFT(STR([Order Quantity by State]),1)
END

<計算式の意味>
・IF~:10の位がない場合は「0」にする必要があるので、州別の注文数が10未満の場合は「0(文字列)」
・ELSE~:それ以外の場合は、州別の注文数量を文字列にしたもの(STR関数は数字を文字列に変更する関数)の左から1つ目を抽出

葉のデータ
新しい計算式を作り[Leaf]と名付けます。

//Leaf

RIGHT(STR([Order Quantity by State]),1)

<計算式の意味>
1の位はどの数値にも必ず存在するので、IF関数は使いません。
州別の注文数量を文字列にしたものの右から1つ目を抽出

分離のために一旦文字列にしたので数値に戻します。
左側のデータペインにある[Stem]の先頭にある「=Abc」のアイコンをクリックして「数値(整数)」に変更します。
[Leaf]についても同様に数値に戻しておきます。

[Stem][Leaf]を「行」に配置します。
10の位と1の位に分離されていることを確認します。
これで「幹」と「葉」のデータが完成です。

注文数を10の位と1の位に分離

4.「葉」を並べる

「葉」の部分は、2023年を左側に、2024年を右側に配置する必要があります。
私の中で、データを並べる=INDEX関数なので、試しに右と左をプラスとマイナスをつけた計算式を作ってみたらうまくいきました!
ということで、新しい計算式をつくり[X]と名付けます。

//X

IF MIN(DATEPART('year',[Order Date]))=2023
THEN -INDEX()
ELSE INDEX()
END

※「DATEPART('year',[Order Date]」に「MIN」がついているのは、集計と非集計のデータを混在することができないので、強制的に集計に変更するためのテクニックです。「MAX」とかでも問題ありません。

「シート1」を右クリックして「複製」をクリックします。
新しくコピーされたシートで、フィルター情報以外のすべての情報を削除します。

複製したシートでフィルター情報以外をクリアして状態

左側のデータペインから[Stem]を「行」に配置します。「行」に配置した[Stem]をクリックし「連続」(緑色)に変更します。
続いて[X]を「列」に配置します。
次に、[State/Province][Leaf][Order Date]を「マーク」の「詳細」に入れます。([Order Date]は自動で不連続の年、青色の「年(Order Date)」になる)
グラフの種類を「自動」から「円」に変更します。
上部メニューの「分析」をクリックして「スタックマーク」を「オン」に変更すると、何となくお題のVizに近い形になります。
上下が逆転しているので軸の設定を変更します。
縦軸をダブルクリックし「軸の編集」画面で「スケール」の「反転」にチェックをいれます。

何となくお題のVizに近い状態

5.「幹」を配置する

左右にデータが並んでいる状態をみると、ちょうど真ん中にある「0」のところにうまく「幹」のデータが並ぶとお題のVizと同じ状態になりそうです。

「0」のところに幹がくればいい感じになりそう

「列」にある[X]の横の空白部分をダブルクリックして「MIN(0.0)」と直接計算式を入れます。(自動で[集計(MIN(0.0))]となる)
※ここで「MIN(0)」ではなく「MIN(0.0)」にするのは、この後に設定するリファレンスバンドを小数点1桁の単位で設定したいため

「マーク」で「集計(MIN(0.0))」を選び、元から入っている情報をすべて削除します。
そのあと、新しく[Stem]を「ラベル」に配置して、グラフの種類を「テキスト」に変更します。
横軸で、右側にある「MIN(0.0)」を右クリックして「二重軸」を選びます。続けて、下側にある横軸を右クリックし「軸の同期」を選びます。
これで、幹葉図の基本形が完成です。

幹葉図の基本形が完成

6.「幹」を整える

「幹」の両側には茶色の太線があり、背景も薄い茶色になっています。
これらは、アナリティクス機能にある「リファレンスバンド」で作ります。
上側にある横軸(MIN(0.0)の方)を右クリックし、「リファレンスラインの追加」を選びます。
「リファレンスライン、バンド、またはボックスの追加」画面で、以下画面のように設定します。
※「MIN(0)」としていると、定数で設定できる数値が整数に限られてしまいます。今回は「MIN(0.0)」としているので小数点の細かい設定が可能になっています。

リファレンスバンドの設定

「マーク」で「集計(MIN(0.0))」を選び、色に設定されている[メジャーネーム]を削除します。
「テキスト」をクリックして「幹」の文字の大きさや太さを整えます。(私の場合、12ポイントの太字)
「ツールヒント」をクリックして「ツールヒントの編集」画面でデフォルトで入っている情報をすべて削除して空白にしておきます。

7.「葉」を整える

色の設定
「マーク」で「X△」を選び、[Order Date]を不連続の年(青色、「年(Order Date)」)にして「色」に配置します。
2023年と2024年の2色に色分けされるので、それぞれを指定の色に変更します。
「マーク」の「色」をクリックして「色の編集」をクリックます。
「2023」をダブルクリックして表示される「色の選択」画面で、右下にある「HTML」に「#DF5464」を入れて「OK」をクリックします。
「2024」も同様に「#A0CA5A」に設定します。

大きさの設定
「マーク」の「サイズ」で大きさを整えます。(私の場合、真ん中のより少し大きめ:60%くらい)

ラベルの設定
左側のデータペインから[Leaf]を「マーク」の「ラベル」に入れます。
続けて「ラベル」をクリックして、「テキスト」で大きさと太さを整えます。(私の場合、12ポイントの太字)
もう一度「ラベル」をクリックして「配置」で「水平方向」「垂直方向」ともに真ん中に変更します。
段々と見た目がお題のVizに近づいてきました。

ラベル配置まで完了

葉の順番を整える
お題のVizでは、「幹」の0を起点に左右に外に向かって小さいものから順に「葉」が並んでいます。今の状態だと順番がバラバラなので、これを並べ替えます。
まず最初に、「X△」の「マーク」で詳細の方の[Leaf](ラベルの方ではない)が一番上になるようにドラッグで順番を入れ替えます。
※ここで一番上に[Leaf]がないとうまく並べ替えができません。

マーク内の順番が大事!

次に、詳細の[Leaf]を右クリックして「並べ替え」を選びます。
「データソース順」の「降順」にすると、お題のVizどおりの順番になります。

ツールヒントを整える
「マーク」で「X△」を選び、[Order Quantity by State]を「ツールヒント」に入れます。(自動で合計になる)
「ツールヒント」をクリックして以下画像のとおり設定します。(私の場合、太字は11ポイント、その他は10ポイント)

ツールヒントの設定

軸を整える
少し細かいのですが、お題のVizでは「1」単位で縦横の線があるので、軸の目盛幅を固定しておきます。
下の方の横線を右クリックして「軸の編集」を選びます。
「目盛り」タブをクリックして、「大目盛り」を以下のとおり設定します。
・固定
・目盛りの原点:0
・目盛り間隔:1

線を整える
下の方の横線を右クリックして「ヘッダーの表示」のチェックを外します。
「行」にある[Stem]をクリックして「ヘッダーの表示」のチェックを外します。
上部メニューの「書式設定」から「線」を選択します。
「線の書式設定」画面で「ゼロライン」を「なし」にします。
「グリッド線」で線の種類を細かい破線(一番下)にし、太さを左から2番目に変更します。
これで幹葉図が完成です。
シート名を「stem&leaf」に変更します。

8.ダッシュボードを作る

新しくダッシュボードを開き、「サイズ」で「固定サイズ」を選び、幅:1000px、高さ:800pxにします。
レイアウトは、上段にタイトル、その下に幹葉図とフィルター群が並んでいます。

「オブジェクト」から「テキスト」を選び、お題のVizを参考にタイトルを記入、大きさや位置を整え、ダッシュボードに配置します。
つづいて「オブジェクト」から「水平コンテナ」を選び、タイトルの下に配置します。その中に「stem&leaf」のシートを配置します。
ダッシュボードの右側に凡例群が自動配置されるので、それらをコンテナごと選択し、「水平コンテナ」の「stem&leaf」の横に配置しなおします。それぞれのオブジェクトの高さやレイアウトを整えます。

「stem&leaf」シートのタイトル文字を右クリックし「タイトルの非表示」を選択します。

フィルターは表示形式が違うので変更します。
「Ship Mode」のフィルターをクリックして表示されるグレーのタブの「▼」をクリックし、「単一値(リスト)」を選びます。
もう一度「▼」をクリックし、「カスタマイズ」で「「すべて」の値を表示」のチェックを外します。
フィルターのタイトルは少し太字なのでここも合わせます。
グレーのタブの「▼」をクリックして「タイトルの編集」を選び、タイトル文字を太字にします。
「Category」「Sub-Category」についても同様に表示形式等を変更します。

色の凡例をフィルター群の上(一番上)に配置します。グレーのタブの「▼」をクリックして「タイトルの編集」を選び、タイトルを「Year of Order Day」に変更します。

右側の一番下には、データソースや使っている色の情報等があるので、「オブジェクト」から「テキスト」を選んで、左側のコンテナの一番下に配置し、お題のVizを参考に情報を記入します。

最後に、ワークブック全体のフォントをお題のVizに合わせます。
上部メニューの「書式設定」で「ワークブック」を選択します。
左側に表示される「ワークブックの書式設定」画面で、一番上にある「すべて」のフォントを「Poppins」に変更します。

ダッシュボードの名前を「WOW2024 W52」に変えれば完成です。

Tableau Publicにパブリッシュしたら、WOWのトラッカーに登録するのも忘れずに!
▼WOWトラッカー
https://workout-wednesday.com/track-submission/


いいなと思ったら応援しよう!