見出し画像

私の場合…WOW2024 Week51

今年のWOWもあと2つになりました。
ここにきて、出題者のEricaさんから「最後のチャレンジ」が届きました。
▼今回のお題はこちら

Week7、Week38の変形版ですが、なかなかやっかいでした。
特に、「West」だけの棒グラフからそれ以外のRegionの棒グラフに戻った時に、「West」だけの棒グラフになる前の状態が残っている必要があるところに苦戦。
後で出題者のVizを覗いてみたんですが、全然違う手順でした。
おそらく、三者三様の手順があると思うので、いつものことですが特に今回は他の人のVizも覗いてみることをおススメします。
私も、いろんな人のを覗いていますw
以下、私の手順です。


1.全体を眺める

・「West」を選ぶと「West」だけの棒グラフ
・この状態で「West」をもう一度押す or 他のRegionを押すと「West」を押す前の状態に戻る★ここが一番苦労したところ★
・「West」が選ばれていない状態で他のRegionを押すと、棒グラフが出現→消える→出現・・・を繰り返す

2.基本となる棒グラフをつくる

指定のデータを読み込んでシートを開きます。
データペインから「行」に[Region][Category]と順番に配置します。
次に「列」に[Sales]を配置します。(自動的に合計になる)
横軸のタイトル「Sales」の文字の横にある三角形の三本線をクリックして、データを「降順」に並べ替えます。
続いて、「行」の[Region]をクリックして「並べ替え」を選びます。
「並べ替え」で以下の通り設定します。
・並べ替え:フィールド
・並べ替え順序:降順
・フィールド名:Sales
・集計:合計

並べ替え完了

「マーク」の「色」に「Region」を入れます。
右側の色の凡例で「West」をダブルクリックし「色の編集」画面を表示させます。
※「マーク」の「色」をクリックして「色の編集」でも同じ画面が開きます。
「データ項目」の「選択」で「West」をダブルクリックし、「色を選択」画面で右下の「HTML」に「#3d405b」を入れて「OK」をクリックします。
他のRegionについてもお題で指定の色に変更します。
シート名を「bar」に変更します。

3.選択ボタンをつくる

新しいシートを開きます。
左側のデータペインから[Region]を「行」に置きます。
次に「列」の空白部分をダブルクリックし、直接「MIN(1.0)」と計算式を書き込みます。(自動で[集計(MIN(1.0))]になる)
※この時、「MIN(1)」とすると軸の変更単位が整数で固定されてしまいます。「MIN(1.0)」とすることで小数点の細かい単位で軸の変更ができるようになります。
「マーク」で「形状」に変更します。(とりあえず今はデフォルトのままで大丈夫です。)
横軸をダブルクリックして、「軸の編集」で「範囲」を「カスタム」とし、「開始値:0.9」「終了値:2.5」で固定します。
そうすると、丸印が左端に寄ると思います。
次に「マーク」の「ラベル」に「Region」を入れます。続けて「ラベル」をクリックして「配置」で「水平方向」を「右」(一番右側)に変更します。

マークが左端に整列、右側にラベル

横軸を右クリックし「ヘッダーの表示」のチェックを外します。
「行」にある[Region]を右クリックして「ヘッダーの表示」のチェックを外します。

次に、[Region]をクリックして「並べ替え」を選びます。「並べ替え」で以下の通り設定します。
・並べ替え:フィールド
・並べ替え順序:降順
・フィールド名:Sales
・集計:合計

上部メニューの「書式設定」から「線」を選び、「グリッド線」「ゼロ ライン」「軸線」のすべての線を「なし」にします。
画面表示を「ビュー全体」に変更しておきます。

シート名を「menu」と変更します。
後から、色や形状を変更するのでとりあえず今はここまでです。

選択ボタンがいったん完成

4.ボタンを押したときの動きをつくる

出現したり消えたりするロジックは以下のとおりです。
通常、パラメーターは選択したディメンションをひとつだけ格納して使うことが多いのですが、今回はパラメーターの中に複数のRegionを「|」で区切って(私の場合、「|」で区切っていますが、区切りの記号は何でもOK。「;」とか「,」とか…)格納していきます。
(例:West|East|Central|)
こうすることで、パラメーターに含まれているとき:出現、含まれていないとき:消えるという動作になります。(パラメーターと等しい時、ではない!
それを前提に、とあるRegionを選んだ時に、パラメーターの中に選択した「Region」+「|」が含まれているかどうかを判別します。
含まれているときは「Region」+「|」を「’ ’」(空白)に置き換えます。
パラメーターに含まれなくなるので消えます。
逆に、含まれていないときは、今あるパラメーターの文字列に「Region」+「|」を付けます。
パラメーターに含まれるので出現します。
こうすることで、出現→消える→出現…を繰り返すことになります。

パラメーターを作る
まずは、パラメーターを作ります。
左側のメニューで「新しいパラメーターを作る」をクリックし、「パラメーターの作成」で以下の通り設定し、[P_Region]と名付けます。
・名前:P_Region
・データ型:文字列
・現在の値:空白
・許容値:すべて

パラメーター用の計算式を作る
次に、このパラメーターを動かすための計算式を作ります。
新しく計算式を作り、[Region for P]と名付けます。

//Region for P

IF CONTAINS([P_Region],'West|') THEN REPLACE([P_Region],'West|','')   
ELSEIF CONTAINS([P_Region],[Region]) THEN REPLACE([P_Region],[Region]+'|','')   
ELSE [P_Region]+[Region]+'|'
END

<計算式の意味>
1行目
パラメーターの中に「West|」がある時→「West|」を「’’(空白)」に置き換える
※1行目なので常に最初にこの置き換えを実施
2行目
次に、パラメーターの中に選んだ「Region」がある時→その「Region|」を「’’(空白)」に置き換える
3行目
最後に、パラメーターの中に選んだ「Region」がない時→「P_Region」(今あるパラメーター情報)にその「Region|」を付け加える

2~3行目は、Week7やWeek38と同じロジックになります。
シンプルに出現→消える→出現を繰り返すパターンです。
今回のキーは1行目にあります。
「West|」がパラメーターの中にいなくなったときに「West」を選ぶ前の状態に戻る必要があります。すなわち、パラメーターの情報を維持しておく必要があります(「West|」に塗り替えてはダメ)。
これを実現する方法をさんざん悩んだ結果、すべてをパラメーター動作で解決するのをあきらめるました。

①パラメーターに「West|」が含まれるとき→棒グラフ側で「West」の棒グラフだけを表示するような計算式にする
②①を実現させるために、「West」が選ばれている状態=パラメーターの中に「West|」が含まれているときに、「West」以外のRegionを選んだら、パラメーターの中から「West|」を消す
→これを実現するのが1行目の計算式です!!

5.選択ボタンを完成させる

「menu」シート開き、左側のデータペインから[Region for P]を選び「マーク」の「詳細」に入れます。

色を動きに合わせる
ボタンの色は
・「West」が選ばれているとき:すべてのボタンがWestの色(紺色)
・「West」が選ばれていないとき:それぞれのRegionの色

この状態を計算式で表します。
新しく計算式を作り[Color]と名付けます。

//Color

IF CONTAINS([P_Region],'West|') THEN 'West'
ELSE [Region]
END

[Color]を「マーク」の「色」に入れます。
右側の色の凡例で、それぞれのRegionの色を指定の色に変更します。

形を動きに合わせる
マークの形は
・選択されているとき:塗りつぶしの丸
・選択されていないとき:枠線だけの丸

この状態を計算式で表します。
新しく計算式をつくり[Shape]と名付けます。

//Shape

IF CONTAINS([P_Region],'West')  
  THEN IF [Region]='West' THEN 1 ELSE 2 END
ELSEIF CONTAINS([P_Region],[Region]) THEN 3
ELSE 4
END

<計算式の意味>
基本形は、パラメーターの中にあるとき(3)とないとき(4)の2パターンですが、「West」が選ばれているときには、パラメーターの中には他のRegionが残っている場合があります。
なので、パラメーターの中に「West|」がある時は、「West」(1)とそれ以外のRegion(2)に分けます。

データペインから[Shape]を右クリックをしながら「マーク」の形状にドロップします。
「フィールドのドロップ」で一番上の「#Shape」を選びます。
この時点では、すべて「4」になっていると思います。(パラメーターには何も入っていないので)
1~4の形を動きに合わせて変更するために、データペインで[P_Region]を右クリックし「パラメーターの表示」をクリックして、右側の凡例スペースにパラメーターを表示させます。
凡例スペースにある[P_Region]に「West|」と書き込みます。

「1」と「2」に分けられる

「1」と「2」に分けられたと思います。
「マーク」の「形状」をクリックして、「1」を「●」、「2」を「○」に変更します。
次に、凡例スペースにある[P_Region]の「West|」を削除して「East|」を書き込みます。
今後は「3」と「4」に分けられます。
「マーク」の「形状」をクリックして「3」を「●」、「4」を「○」に変更します。
続いて「マーク」の「ツールヒント」をクリックして「ツールヒントの表示」のチェックを外します。
これですべての形状の設定が完了です。

形状の設定が完了

6.棒グラフを完成させる

パラメーターだけでの実装をあきらめたので、最後に棒グラフ側で「West」を選択した時に動きに合わせた変更が必要です。
「bar」のシートを開き、新しい計算式を作り[Sales_West]と名付けます。

//Sales_West

IF [Region]='West' THEN [Sales] END

続いて、新しい計算式をつくり[Sales_]と名付けます。

//Sales_

IF CONTAINS([P_Region],'West|') THEN [Sales_West]
ELSEIF CONTAINS([P_Region],[Region]) THEN [Sales]
END

データペインから[Salse_]を選んで「列」にある[合計(Sales)]の上にドロップして上書きします。(自動で合計になる)
そうすると、さきほど「menu」のシートでパラメーターに「East|」と入れていたので、「East」だけ棒グラフが表示された状態になります。
(パラメーターに他のRegionを入れている場合は、それに合わせた状態が表示)
選択されていないRegionは表示させたくないので消します。
ビューの右下にあるグレ囲み「9個のNULL」をクリックして「データのフィルター」をクリックします。

右下のここです

最後の見た目を整えます。
横軸をダブルクリックし「軸の編集」画面で「タイトル」を「Sales」に変更します。
「目盛」タブに移動して「大目盛り」を「固定」にし「目盛り間隔」を「50000」にします。
上部メニューの「書式設定」をクリックし「枠線」を選択します。
「シート」のタブで「列の境界線」を「なし」にします。
「列」にある[Sales_]を右クリックし「書式設定」を選びます。
「ペイン」のタブで「数値」をクリックし「通貨カスタム」を選びます。「プレフィックス」を「$」マークに変更します。
「マーク」の「ツールヒント」をクリックし、以下画像のように設定します。

「bar」のツールヒント

これで「bar」シートが完成です。

「bar」シート完成

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

今回のダッシュボードは、一段目が「WOW2024 Week51」とタイトルが並列、二段目が選択ボタンと棒グラフが並列になっています。
あと、微妙なところなんですが、一段目と二段目の間に薄いグレーの線があります。

新しくダッシュボードを開き、まずは、「サイズ」で「固定サイズ」を選び「幅:800px」「高さ:500px」にします。

一段目の配置
左側の「オブジェクト」から「垂直コンテナ」を選びダッシュボードに配置します。
その中に「水平コンテナ」を配置し、つづいてその中に「テキスト」を配置します。
「WOW2024」と「Week51」を2行にして記入し、位置、大きさをお題にVizを参考に整えます。(私の場合14ポイント)
もう一度、左側「オブジェクト」から「テキスト」を選び、「水平コンテナ」の右側に配置し、タイトルを記入して位置や大きさを整えます。(私の場合26ポイント)

二段目の配置
次に、左側の「オブジェクト」から「水平コンテナ」を選び、タイトルのコンテナの下に配置します。
「レイアウト」タブに切り替えて「バックグラウンド」で背景に薄いグレーを設定します。
その中に、「menu」「bar」のシートを配置します。

「menu」シートのタイトルをダブルクリックし「Select Regions to Filter」に変更します。太さとサイズを整えます。(私の場合、9ポイント、太字)
「menu」のシートが選択された状態で、上部メニューの「書式設定」をクリックし「網掛け」を選びます。
左側に「網掛けの書式設定」が表示されるので「ワークシート」で「なし」にします。

「bar」シートのタイトル文字を右クリックして「タイトルの非表示」をクリックします。
「bar」シートが選択された状態で「レイアウト」タブに切り替えて、「バックグラウンド」で背景を白に設定します。
つづいて、「外部パディング」で上下左右を「15」に、「内部パディング」で上下左右を「10」に設定します。

右側に自動で作成される凡例のコンテナを削除します。
2つのシートのサイズを調整します。
デフォルトだと選択ボタンが上下に均等配置されているので、上に寄せます。「menu」シートをクリックすると表示されるグレーのタブの「▼」をクリックして「自動調整」で「幅を合わせる」を選びます。
これで上詰めになったと思います。

仕切り線を配置する
右側の「オブジェクト」から「空白」を選んで、タイトルとグラフのコンテナの間に配置します。
空白オブジェクトが選択された状態のまま、左側メニューの「レイアウト」タブで「バックグラウンド」で薄いグレーに設定します。
続いて「外部パディング」で上下左右を「0」にします。
もう一度「空白」オブジェクトを選択し、表示されるグレーのタブの「▼」をクリックし、「高さの編集」を選びます。
「高さをピクセル単位で設定」画面で「1」にします。

パラメーターを設定する
上部メニューの「ダッシュボード」から「アクション」を選択します。
左下の「アクションの追加」で「パラメーターの変更」を選択します。
「パラメーターアクションの追加」画面で以下の通り設定します。
・名前:region
・ソースシート:menu
・アクションの実行対象:選択
・ターゲットパラメーター:P_region
・選択項目をクリアした結果:現在の値を保持
・ソースフィールド:Region for P
選択ボタンをポチポチして、お題のVizとおりに動作することを確認します。

ハイライトを消す
ポチポチしていたら気づくと思いますが、選択したRegionがハイライトされた状態になってしまっていると思います。
お題のVizでは、Regionを選択した後も、すべてのRegionが表示されているので、最後に、ハイライトを消す作業をします。

「menu」シートに戻って、次の2つの計算式を作ります。
「計算式の作成」を選び、それぞれ名前を以下のようにつけます。
[de-HL_True]

//de-HL_True

TRUE

[de-HL_False]

//de-HL_False

FALSE

[de-HL_True][de-HL_False]を「マーク」の「詳細」に入れます。

次に「ダッシュボード」に戻って、上部メニューの「ダッシュボード」から「アクション」を選びます。
左下の「アクションの追加」で「フィルター」を選びます。
「フィルター アクションの追加」で以下画像の通り設定します。
※ターゲットシートは「ダッシュボード」ではなくシートを直接指定する

ハイライトを消す設定

「ダッシュボード」の名前を「WOW2024 W51」に変更して完成です。

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

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