私の場合...WOW2024 Week40
今週は、私の師匠が出題者です!
「ブラシフィルター」がお題ですが、個人的には、苦手な日付データの取扱いに関する要素が手ごわかったな、、、という印象です。
▼今回のお題
私はフィルターにセット機能を使ったのですが、他にもいろんなアプローチがあると思うので、ぜひTableau Publicでみなさんのダッシュボードを覗いてみることをおススメします。
以下、私の手順です。
1.全体像を把握する
・複数の棒グラフが選択されている→まさにブラシフィルター!複数要素の選択なのでセットがいい?
・選択した棒グラフの後ろに薄い網掛けのハイライト、カーソルを棒グラフの上にもっていくと1本の長い棒が選択される→2重軸で2本の棒グラフが重なっているみたい
・棒グラフは月単位、折れ線グラフは日単位→日付の処理が必要そう…
・折れ線グラフのタイトルにある日付は、常に月初~月末(例:2022年6月はデータは29日までだが、表示は30日)→日付処理が必要…
2.棒グラフをつくる
ベースの棒グラフ
「列」に[Order Date]を「連続」の「月」を選んで入れる。(緑色&「月(Order Date)」の表示)
「行」に[Sales](自動で合計になる)を入れる。
「マーク」で「棒」を選ぶ。
背景の棒グラフ
新しく計算式を作成し、[Sales_Back]と名付けます。
※Window_MAX関数は、シート内において()内の計算式(今回だと売上合計)の最大値を返します。
//Sales_Back
WINDOW_MAX(SUM([Sales]))
これを「行」に入れます。
売上合計の最大値がすべての日付に展開されます(画面いっぱいの棒グラフ状態)。
[Sales_Back]グラフの縦軸を右クリックして「二重軸」を選びます。続けて右側の縦軸を右クリックして「軸の同期」を選びます。
2つのグラフが重なって背景の方の棒グラフが上にあるので、「行」にある[合計(Salse)」と「Sales_Back]の左右の順番を 入れ替えます。
「マーク」で「Sales_Back」を選び、「色」で「不透明度」を下げて背景の棒グラフを半透明にしておきます。(私の場合30%)
これで、ベースとなる棒グラフは完成です。
3.フィルターを配置する
私の場合、セット機能を選びました。
月単位でフィルターする必要があるので、月単位のデータをもとにしたセットを作る必要があります。
※シンプルに[Order Date]を右クリックしてセットを作ると、”日”まで入った情報のセットになってしまってうまく機能しません
セットの元になるデータを作る
新しい計算式を作って[Order Date/Month]と名付けます。
※私の場合、日付計算がとにかく苦手なので、「列」にある[月(Order Date)]を計算フィールド作成画面にドロップするようにしています。
年単位のデータが必要な時とかも、先に「列」か「行」に[年(Order Date)]を作って計算式にドロップ、です。
//Order Date/Month
DATETRUNC ( 'month' , [Order Date] )
[Order Date/Month]が「日付と時間」になっている場合は(カレンダーの右下に時計マークのついたアイコン)、フィールド名の先頭にあるアイコンをクリックして「日付」に変更しておきます。
セットを作る
次に、[Order Date/Month]を右クリックして、「作成」で「セット」を選択します。「セットの作成」画面で「リストから選択」にチェックを入れて(デフォルト)、「2022/09/01」~「2022/12/01」の4つにチェックをし「OK」をクリックします。
これで新しく[Order Date/Month セット]のフィールドが作成されます。
※2022年9月~12月が”In”の状態
棒グラフに実装する
「マーク」で「すべて」を選択し、「詳細」に[Order Date/Month]を「正確な日付」と「不連続」にして入れます。
続いて、「色」に[Order Date/Month セット]を入れます。
ここまでの作業で、棒グラフの形が崩れてしまうので、整えます。
「行」の[Sales_Back]を右クリックし「表計算の編集」をクリックして以下のように設定します。
・次を使用して計算:特定のディメンジョン
・「Orde Date 月」「Order Date/Month セット の In/Out」「Order Date/Month」の全てにチェック
これで、セットで選ばれた月とそれ以外の月が色分けされ、フィルターとして使う準備完了です。
4.棒グラフを整える
色を整える
「マーク」で「合計(Sales)」を選択し、「色」で「色の編集」ボタンを押します。
「色の編集」画面で「In」と「Out」の色を変更します。(Inはオレンジ、Outは薄いグレー)
もう一度、「合計(Sales)」の「マーク」の「色」をクリックし、「効果」の「枠線」で少し濃いめのグレーを選びます。
「Sales_Back」の方は枠線が不要なので、「マーク」で「Salse_Back」を選び枠線を「なし」にします。
軸を整える
右側の縦軸を右クリックして「ヘッダーの表示」のチェックを外します。
左側に残っている縦軸をダブルクリックし、「軸の編集」画面で「軸のタイトル」を「Monthly Sales」に変更します。
次に、横軸をダブルクリックし「軸の編集」画面で「軸のタイトル」にある「Order Date の月」を削除します。
同じく「軸の編集」画面で「目盛り」タブへ移り、「大目盛り」の「固定」にチェックを入れて以下のように設定します。
・目盛りの原点:2021/01/01
・間隔:1
・単位:年
線を整える
不要な線を消していきます。
メニューバーの「書式設定」をクリックし「枠線」を選びます。「シート」のタブで、「行の境界線」「列の境界線」をすべて「なし」にします。
続いて「線の書式設定」に移り、「行」の「グリッド線」の色をデフォルトより少しだけ濃いグレーに変更し、それ以外の線は「なし」にします。
「列」はすべての線を「なし」にします。
ラベルを整える
「行」にある[合計(Sales)]を右クリックし、「書式設定」を選びます。
「軸」「ペイン」共に、以下のように設定します。
[Sales_Back]も同じように書式設定をします。
・数値:数値(カスタム)
・小数点:0
・表示単位:千(K)
・プレフィックス:$
ツールヒントを整える
「マーク」の「すべて」を選択し「ツールヒント」を以下のとおり設定します。(すべて太字)
<Order Date/Month> | <合計(Sales)>
このままの状態だと「2021/03/01 | $57K」となっていて、お題のVizとは日付の書式が違うので、ツールヒントの日付の書式を変更します。
「マーク」の「すべて」にある「Order Date/Month」を右クリックし「書式設定」を選びます。
「ペイン」のタブで以下の通り設定します。
・日付:カスタム
・書式設定:mmmm yyyy(mmmmは月をフルスペックで表現するという意味。日本語だと3月、英語だとMarch)
これで、「3月 2021 | $57K」になったと思います。英語版のTableauだと「March 2021| $57K」と表示されるはず。
タイトルを変更する
左上の「bar」の文字をダブルクリックして、お題のVizを参考にフィルターの使い方を説明した文章を記載します。
文字の大きさと色を整えます。(色は棒グラフのオレンジと同じ、斜め文字)
最後に、シート名を「bar」に変更します。
5.折れ線グラフを作る
新しいシートを開き、「列」に[Drder Date]を「正確な日付」&「連続」として入れます。(緑色&「Order Day」の名前)
「行」に[Region」と[Sales]を入れます。グラフは自動で「線」になると思いますが、別のグラフになっている場合は、「マーク」で「線」を選んでください。
これでベースとなる折れ線グラフは完成です。
最大値にのみラベルをつける
「マーク」の「ラベル」で「マーク ラベルを表示」にチェックを入れます。同じく「ラベル」の「ラベルをつけるマーク」で「最小値/最大値」を選び、「オプション」で「最小値にラベル」のチェックを外します。
これで、各Regionの最大値にのみラベルが表示されている状態になります。
ラベルを整える
「行」にある[合計(Sales)]を右クリックし、「書式設定」を選びます。
「軸」「ペイン」共に、以下のように設定します。
・数値:数値(カスタム)
・小数点:2 ※折れ線の方は小数点2ケタまで表示
・表示単位:千(K)
・プレフィックス:$
デザインを整える
よく見ると、単なる折れ線ではなく、1日ごとにポイント(丸)がついています。
「マーク」の「色」で「効果」「マーカー」の真ん中を選びます。
同じく「色」で棒グラフの”In”と同じオレンジに変更し、「サイズ」で少しだけ線を細くします。
軸を整える
横軸をダブルクリックし「軸の編集」画面で「軸のタイトル」にある「Order Date 」を削除します。
縦軸の一番上にある「Region」を右クリックし「行のフィールドラベルの非表示」にチェックを入れます。
表に網掛けをする
メニューバーの「書式設定」をクリックして「網掛け」を選択します。
「行」のタブで「縞模様(行)」を以下のように設定します。
・バンドサイズ:左から2つめ(1行とばしの網掛け)
・レベル:一番左(ヘッダーまで網掛けが伸びる)
線を整える
よく見ると、Region同士の間の線が少しだけ濃いので、線の色を変更します。メニューバーの「書式設定」をクリックして「枠線」を選択します。
「行」のタブで「行の境界線」の色を少し濃いめのグレーに変更します。
ツールヒントを整える
折れ線グラフのツールヒントの日付は「月/日/年」の並びになっています。なので、ここでも日付の書式を変更します。
「列」にある[Order Date]を右クリックして、「書式設定」を選びます。
「ペイン」のタブで「日付」一覧の中から「3/14/2001」を選びます。
※月、日ともに一桁の場合は頭に「0」をつけない、月/日/年の順に並んでいるの条件に一致
タイトルを整える
折れ線グラフのタイトルは動的です。棒グラフで選択した初月の1日と最終月の最終日が自動的に表示されるようにする必要があります。
<初月の1日>
新しい計算フィールドを作成し[Order Date_MIN]と名付けます。
元から「月」になっているデータを使用することで、最小日が必ず「1」になります。
※Tableauでは「月」となっているデータにも日や時間の情報を持っていて、例えば、「2024/10/01 0:00:00」といった状態になっています。
//Orde Date_MIN
WINDOW_MIN ( MIN ( [Order Date/Month] ) )
<最終月の最終日>
こちらは少し複雑です。冒頭の全体像を把握するところでも記載しているとおり、売上データが最終日までない月があるので、[Order Day]のMAX値をひっぱってくるだけではダメなんです。
ではどうするか、といいますと。
最終日=最終月のひと月先の初日から1日前の日
と読み替えます。
新しく計算フィールドを作り、[Order Day_MAX]と名付けます。
//Order Day_MAX
DATE(
DATEADD ( 'month', 1 , WINDOW_MAX (MAX ([Order Date/Month]) )) //最終月のひと月先の初日
)-1
この計算式を分解してみます。
①フレームの大枠
DATE(最終月のひと月先の初日)-1
②最終月=シート上にあるデータの中で最も大きな日の月
WINDOW_MAX (MAX ([Order Date/Month]) )
※[Order Date/Month]は月データなので初日は必ず「1」
③最終月のひと月先:最終月にひと月加える
DATEADD ( 'month', 1 ,最終月)
となります。
[Order Date_MIN]と[Order Date_MAX]を「マーク」の「詳細」に入れます。
シート右端のタイトルをダブルクリックして「タイトルの編集」画面で以下のとおり設定します。
文字の大きさや色を整えます。
※「From」と「to」は少し小さくて斜め文字
Sales by day of week From <集計(Order Date_MIN)> to <集計(Order Date_MAX)>
タイトルの日付もこのままだと書式が微妙に違うので変更します。
左側のデータペインにある[Order Day_MIN]を右クリックして「既定のプロパティ」の「日付形式」を選びます。一覧の中から「3/14/2001」を選びます。(ツールヒントの時と同じ)
[Order Date_MAX]も同様に日付の書式を変更します。
※なぜか、「マーク」にある[Order Date_MIN]の書式変更では表示が変わってくれませんでした…
フィルターをセットする
最後に、[Order Date/Month セット]を「フィルター」に入れます。
すると、2022年9月~12月の4か月間のデータにフィルターされた状態になります。
最後にシート名を「region」に変更します。
6.ダッシュボードの作成
今回は、タイトル、棒グラフ、折れ線グラフの3段なので、シンプルにそのままどんどん配置していきます。
グラフを並べる
まず、ダッシュボードのサイズを固定します。
新しくダッシュボードを開き、「サイズ」で「固定サイズ」「汎用デスクトップ(1366×768)」を選びます。
次に、「オブジェクト」から「テキスト」を選び、タイトルを記入して、文字サイズ等を整え、配置します。
同様に「bar」「region」を縦に並べます。
それぞれの高さを調整します。
セットアクションを設定する
棒グラフで選択した月で折れ線グラフをフィルターさせるために、ダッシュボードアクションの設定をします。
上のメニューバーの「ダッシュボード」をクリックし「アクション」を選択します。
左下にある「アクションの追加」ボタンで「セット値の変更」を選び、「セットアクションの追加」画面で以下の通り設定します。
・名前:select month
・ソースシート:bar(ダッシュボード)
・アクションの実行対象:選択
・ターゲット セット:Order Date/Month 瀬戸
・アクションの実行結果:セットに値を割り当て
・選択項目をクリアした結果:セット値を保持
これで、棒グラフで選択した月の日別推移を折れ線グラフで表示できるようになりました。
最後にひとつ、棒グラフで日付を選択した時に、選択した情報がハイライトされたままになっているのが気になりませんか?
見本のVizでは、選択した後もきれいに棒グラフが表示されています。
最後にこの選択時のハイライトを消していきます。
ハイライトを消す
この方法は、私もWOWをやる中で学んだテクニックです。これまでの諸先輩方が編み出した裏技と認識していますw
きれいなViz作りには必須のテクニックです。
「bar」のシートに戻って2つの計算式を作り、[de-HL_True][de-HL_False]と名付けます。
※恐らくこれは「True」「False」でないとダメではなく、「あ」と「い」とかの意味のない2つの文字だったら何でもいいのではないかと思います。
//de-HL_True
TRUE
//de-HL_False
FALSE
[de-HL_True][de-HL_False]の2つを「マーク」で「すべて」を選び「詳細」に入れます。
次に「ダッシュボード」に戻り、上部メニュバーの「ダッシュボード」をクリックし「アクション」を選びます。
「アクションの追加」で「フィルター」を選び、以下のように設定します。
・名前:de-HL_bar
・ソースシート:bar(ダッシュボード)
・アクションの実行対象:選択
・ターゲットシート:bar(★ダッシュボードではなくシート)
・選択項目をクリアした結果:すべての値を表示
・フィルター:選択したフィールド
・ソースフィールド:de-HL_True
・ターゲットフィールド:de-HL_False
そうすると、選択した後もハイライトされていない状態に戻ります。
なぜこうなるのか、、、は詳しくは説明できないまま使っていますし、今回ご紹介していますが、とにかく選択後のハイライトを消すテクニックとして覚えておいて損はありません!
全体のフォントを変える
私の場合、WOWはできるだけ見た目をお題のVizに合わせる、というポリシーで取り組んでいます。
今回のVizの場合、フォントもデフォルトから変更されているので、合わせようと思います。
画面上のメニューバーから「書式設置」をクリックして「ワークブック」を選びます。
「すべて」のところで「Trebuches MS」を選ぶと、ワークブック全体のフォントが変わります。
上下左右の余白を整えて、ダッシュボードの名前を「WOW2024 W40」に変更したら完成です。
Tableau Publicにパブリッシュしたら、WOWのトラッカーに登録するのも忘れずに!
▼WOWトラッカー
https://workout-wednesday.com/track-submission/