データ可視化のアイデア帳

データ可視化にまつわるあれこれ

Google のデータ ビジュアライゼーションに関するマテリアルデザインの記事を Tableau 視点で読む

先日話題になった、Google のデータ ビジュアライゼーションの記事が気になったので読んでみました。

material.io

この記事はデータを可視化する際の基本的なセオリーから、個々のケースでの DO と DON'T が紹介しています。非常にまとまっている反面、英語であること、それなりの前提知識を必要とするなと感じたので*1 Tableau 的な視点から読んでみた感想をまとめていきます。

なお Tableau 視点ですので、Tableau にない思想やない機能については言及しません。訳してるように見える箇所も意訳ですので、正確性を求める方は元記事を読んでください。

Principle

データ可視化の目的。データ可視化は意思決定のために必要なコミュニケーション手段であり、可視化されたデータは比較が容易になったり、ストーリーを伝えるために使われる。

重要なポイントは 3 点

  • 正確性

データの可視化ではデータの正確性、明確さ、完全性を優先する。データを歪めない。

  • 使いやすさ

文脈や目印を使ってデータ探索や比較を容易にする。

  • 拡張性

ユーザーのニーズに合わせて、画面を構成できること

Type

いわゆるどんなチャートを選ぶべきかという話。Tableau ではおなじみの 「表示形式」の話なので割愛。日本語で詳細を見たい方は Visual Vocabulary がお勧め。

github.com

Selecting Charts

例えば同じ「比較」にしても何種類もチャートが選択肢としてある中、どれを最終的に選ぶべきかという話。本来は Visual Vocabulary 見れば済むのですが、シンプルにまとまっています。

時系列変化を示す場合

チャートの種類 利用目的 ベースラインの値 系列の数 データ型
線グラフ データのわずかな変化を示す 任意の値 任意 (8 以上の時に有効) 連続
棒グラフ データの大きな変化を示す。個々のデータが全体に影響しているのか、比較やランキングなど ゼロ 4 以下 不連続またはカテゴリー
エリア グラフ データセット間の関係を簡潔に示す。個々のデータが全体に影響しているか示す。 ゼロ (1 系列以上の場合) 8 以下 連続

棒グラフと円グラフ

棒グラフも円グラフも全体における個々のデータの割合を占める場合に使うと解説されてます。円グラフは使うな、と言いたいところですがここでは元記事に従います。

棒グラフは異なるカテゴリーの時間による変化を示すのに使う

f:id:zkn360:20190708160723p:plain

ちなみに「Google 流資料作成術」によると、カテゴリーとカテゴリー間はすき間をあけることでそれぞれをグループ化して見やすくしようとあるのですが、Tableau ではそれはできないので、線を入れることで表現します。*2
f:id:zkn360:20190708160944p:plain

円グラフは時系列変化に使わない

そもそも角度を並べて比べるのは不可能。
f:id:zkn360:20190708161424p:plain

せめて帯グラフ使うとか工夫しましょう。
f:id:zkn360:20190708162055p:plain

エリア チャート

エリア チャートは積み重ねたタイプとオーバーレイ (レイヤーを重ねた) タイプの 2 種類。

積み重ねたタイプのエリア チャートは系列が増えても見やすい

f:id:zkn360:20190708163230p:plain

オーバーレイ タイプのエリア チャートは読みにくい上にデータをあいまいにする

Tableau だと、[分析] メニューの [スタック マーク] を [オフ] にするってことですね。系列が 2 つまでならアリなんですけど、3 つ以上だと…そもそも凡例と合ってるかさえわからない状態に。
f:id:zkn360:20190708163715p:plain

Style

形や色、テキストを上手に使うとユーザーへの認知的負荷を下げることができるため、いわゆる「ぱっと見てわかる」につながる。

Styling different types of data

データをどのような見た目にするか決めていくにあたりどのような視覚属性があるかというと下記の通り。

  • 形状
  • サイズ
  • エリア
  • 大きさ
  • 長さ
  • 角度
  • 位置
  • 方向
  • 密度

複数の属性を使用する場合もある。
f:id:zkn360:20190708165208p:plain
ちなみに Tableau だと色と形の両方を一度に表現する凡例は作れないので、凡例用のシートを別に作成します。

形状

いろんな形状でチャートは表現できるし、どれを選ぶかは迷いどころ。

Level of shape detail

一瞬新手の LOD かと思いました。見る人にとってわかりやすい、操作しやすい形状を選択し、あまり詳細にする (細かすぎる) のは避けるべき。

f:id:zkn360:20190709165857p:plain
棒グラフは本来棒の先端の位置 (長さ) で数値の大小を比較するものだが(左)、無意味に先端を丸くした棒グラフは数値が読み取りにくい。(右)

色の利用方法について。Tabloid*3 であればそんなに違和感ないと思われる箇所です。

  • カテゴリーを区別する
  • 量の多寡を示す
  • 特定のデータをハイライトする
  • 意味を伝える

色の使用例:
f:id:zkn360:20190710100817p:plain

Area of Focus

色の使いすぎは良くないよ、という話。色はデータを注目するのにも使える一方、色の使いすぎはデータのどこに注目すればいいのかわからなくなる。
f:id:zkn360:20190710101736p:plain
Tableau のイベント等でよく出る例ですね。

その色がどういう意味か示そう

色には付随するイメージがあります。警告安全や、熱い冷たい等がわかりやすい例だと思います。ただ、このイメージも文化が違えば意味が違うため、色がどういう意味かを示しておく必要があります。

Accrssibility

有名なのは赤緑色盲ですが、人によっては異なる色の組み合わせでも見えづらいということがあります。そういう状況も考慮しましょう。詳細な説明とどういう色に注意すべきかはこのサイトがわかりやすいです。

tsutawarudesign.com

線グラフとして使うだけではなく、様々な使い方ができる。

  • 注釈
  • 予測要素
  • 比較材料
  • 信頼区間
  • 異常
線のテクスチャーを工夫してわかりやすいチャートに

Tableau では元記事のように点線でグラフを作成することができないので、色にカテゴライズされる話でもあるのですが、要は色や形の種類数も人間が画面を見て理解するまでの時間を遅くする要素になるのでなるべく減らしましょうということです。

f:id:zkn360:20190710104222p:plain
左は最新の年を濃色、その前の年を薄色で示し、なおかつカテゴリーごとに色を付けた例で、右は年とカテゴリーの組み合わせ一つ一つに違う色を付けた例。

Typography

どうもタイポって言うとキーボードの打ち間違いと思ってしまうのですが、このセクションは文字の体裁の話です。対象となる部分はタイトル、データラベル、軸ラベル、凡例です。ざっくりまとめると読みやすいフォントとそこそこ大きい pt サイズ使いましょうということ。日本語だと私はメイリオか Meiryo UI 使うことが多いです。あと何でもかんでもボールドにすると読みにくいので注意しましょう。

Iconography

ここら辺りから Web UI 的な要素が強くなってきます。*4ユニバーサルな意味合いのアイコンを使うというのが最も注意すべき点といったところです。アイコンの使用用途は下記が代表的なものだそう。*5

  • カテゴリーのデータで、他のグループやほかのカテゴリーと違うことを示す
  • フィルターやズーム、保存やダウンロードといった UI コントロールとアクションを提示する
  • エラーやデータの欠損、完了、危険といったような状態を示す

アイコンを凡例として使うというのも一手ですね。

軸ラベル

まさに「Google流資料作成術」でも触れられている点になります。軸ラベルを付ける場合にはほどほどの目盛り幅にするというのも気を付ける点。
f:id:zkn360:20190712101420p:plain

軸はゼロから始めるべき

たまにグラフの開始位置がゼロから始まっていないものを見かけますが、誤解を与えるのでやめましょう。研究成果を良く見せたいとか世論の印象を操作したい目的でゼロから始まっていないグラフを見かけますね。詐欺チャートとかとも言われます。
f:id:zkn360:20190712101721p:plain

目盛りの幅も気を付けよう

f:id:zkn360:20190712102607p:plain

グラフの縦横はラベルの読みやすさで決めてもいい

商品名など軸ラベルが長くて読みづらいときなどはグラフの縦横変えてもいい。ちなみに Tableau には文字を斜めに表示する機能はないので、名前が長い時は横向き一択です。
f:id:zkn360:20190712103331p:plain

凡例と注釈

チャートに必要な情報を付加するのが凡例と注釈。注釈は特定のデータをハイライトする目的で使う。

凡例とチャートを分けると理解しにくくなるので、チャートに直接ラベルとして凡例を表示してもいい。
f:id:zkn360:20190712103825p:plain

Small Display

小さなディスプレイ (アプリとかなんとかウォッチとか) にデータを表示するときの注意事項。Tableau をそこまで小さいディスプレイに表示することはないので割愛。

動作

ユーザーが操作するためのコントロールをイチから作成する場合はどうしましょうかというセクション。Tableau にはもともと複数の種類の動作が用意されており、結果どういったアクションが発生するのか作成者が制御できるので、ここでは割愛。

ダッシュボード

特定の目的に沿ったチャートの集まりをダッシュボードと言います。*6

ダッシュボード デザイン

ダッシュボードのデザインは目的に応じて変わります。…ってこのセクション、以前私が会社のイベントで講演した内容でして、良ければそちらの資料をご覧ください。*7講演内容のダッシュボードの型のセクションが一番近いです。

https://www.tableau.com/sites/default/files/ddo_tokyo_2019_techsession_e7.pdf

元記事では目的別のセクションの前にある、デザインガイドがわかりやすいです。
上から情報をどのように並べるべきか、どの程度の情報を並べるかというのが完結に説明されています。

  1. 最も注意すべき問題は何か (ダッシュボードのタイトル)
  2. その問題が発生したタイミング
  3. 問題が発生した箇所
  4. その問題で影響を受けるほかの問題など
ダッシュボードのタイプは 3 種類
  • Analytical
  • Operational
  • Presentation

これも講演内容に(以下略


さて、長い記事にお付き合いいただきありがとうございました。データの可視化には一定のセオリーがあるということがわかりやすくまとまってましたね。ツールによってできる/できないはありますが、共通のセオリーは覚えておいて損はありません。

*1:この記事を理解する前提知識としては間違いなく「Google 流資料作成術」の書籍です。お時間の許す方は先にそちらを一読されることをお勧めします。

*2:そもそも Viz の線を全部消す方がよっぽどしんどい

*3:Tableau 使う人のこと

*4:したがって、端折る度合いが大きくなってきます

*5:アイコンの使い方なんで改めて考えたことなかった。

*6:知ってた

*7:いつまでリンクが生きているかは不明です。悪しからず

何かと便利な Tableau での日付ずらしテクニック

Excel で 2 つの日付の差を計算するのが上級テクニックという記事を先日 Facebook で見かけて目をむきました。Tableau だと初級ハンズオンの次くらいに日付計算を扱ったりするので特に難しいという印象はなかったのですが、関数そのものの使い方ではなく利用シナリオをもっと知っていたら適用できる場面がもっと増えるかもしれません。ということで今回は最近私が使って便利だなと思った日付計算のシナリオをご紹介します。と言ってもタイトル通り日付をずらすシナリオです。


そもそも何がやりたかったかというと、これ。今度沖縄に行くことになったので、そのタイミングで梅雨が明けているかどうかを調べてみようと思ったわけです。気象庁では 1951 年以降の梅雨入りと梅雨明けのデータを公開しており、*1これを利用して今年の梅雨明けを予測できる Viz を作成したかったんです。

f:id:zkn360:20190613151809p:plain

前処理は置いておいて、*2単純に梅雨の日数を比較するだけなら日付の比較で解決します。計算式はこんな感じ。


梅雨の日数
DATEDIFF("day", [梅雨入り], [梅雨明け])


ところが、私は梅雨入りの日付と梅雨明けの日を結んで線の長さで梅雨の日数を表示したかったんです。*3この場合、Tableau で使用するチャートはガントチャートです。ガントチャートの場合は軸の値が連続である必要があります。日付を日の連続にすると 「2019 年 6 月 13 日」といったように年月日まで考慮されます。通常の連続日付を使用するとこんな感じになります。

f:id:zkn360:20190613151307p:plain


これだと軸の範囲もさることながら比較したいのは月日の部分だけなのに年まで考慮されてしまっているがために、ずれた形での表示になります。これをずらさずに月日だけで比較したい。そんな時は日付をずらす (新たに作る) テクニックが有効です。例えば、今回はすべてを同じ年とみなしてしまえばいいので年を強制的に作ってしまいます。計算式はこちら。


軸用日付
MAKEDATE(1900, MONTH([年月日]), DAY([年月日]))


※年を 1900 に設定しているのは、元データに干渉しない適当な値を入れているだけです。
この軸用の日付を利用すれば、年が同じですので、月日だけを並べることができます。実際の Viz は ↓ を参照ください。


この日付をずらす (作る) テクニック、以外と役に立ちます。例えば前年同期間比較。

前年と今年 (だけに限った話ではないですが) の同日あるいは同週などを比較したいときに使うパターンです。同週比較の場合、日付の週数を使えばいいのではと思いきや週の始まりが日曜日に設定されているため同週と言っても日付にかなりずれが出ます。

ちなみに週や会計年度の始まりは変更することができます。*4データソース名を右クリックして「日付のプロパティ」を確認ください。


f:id:zkn360:20190613153409p:plain


さて、前年と今年の同日もしくは同期間を比較したいときには日付 (年) を強制的に揃えます。梅雨 Viz で解説したのと同じ方法ですね。ただ梅雨 Viz と違うのは相対日付が使えるよう最新の日付に揃える必要があるということ。この場合、計算式はこんなものが使えます。


① 今年と日付の年差
DATEDIFF("year", [日付], TODAY())

② 日付を今年に揃える
DATEADD("year", , [日付])


※もちろん ① と ② をまとめて記述しても大丈夫です。

複雑そうに見えますが、元データの日付と今日の日付の年数の差を元データの日付の年部分に足して、日付をすべて今年に揃えているだけです。これで相対日付フィルターを使って、特定の期間だけを年をまたいで分析できるようになります。

具体的なサンプルは Tableau Public に置いておきましたので、適宜ご利用ください。
public.tableau.com

*1:気象庁|過去の梅雨入りと梅雨明け

*2:もちろん Tableau Prep Builder でやりました。

*3:雨っぽい表現にしたかった

*4:データソースによって異なります。

Tableau 2019.2 新機能 パラメーター アクションで簡易分析を強化する

Tableau Desktop 2019.2 には様々な新機能が追加されました。*1その中で気になったのがパラメーター アクション。2018.3 で追加されたセット アクションに続く強力な機能です。強力な機能ですが、何にどうやって使えばいいの? ってことで思いつくままやってみました。

この記事で説明するサンプルはこちら。



Tableau のアナリティクス機能はとても便利で、簡単に平均や中央値を教えてくれます。
f:id:zkn360:20190527164857p:plain


アナリティクスのスコープ (計算対象) 全体の値だけでなく、選択した箇所の値も再計算して教えてくれる優れもの。これを Tableau では簡易分析なんて呼んでたりします。
f:id:zkn360:20190527164952p:plain


ただ問題は、全体の値と選択した箇所が (ざっくりではなく) 具体的にどの程度差があるかを知るには計算を都度しないといけないという点でした。選択と同時に値まで確認できたらいいですよね。それをかなえるのがパラメーター アクションです。
f:id:zkn360:20190527165000p:plain

パラメーター アクションとは

これまでリストや数値の入力でパラメーターの値をセットしていたのに対し、パラメーター アクションは Viz を直接選択するなどの動作によりパラメーターをセットできる機能です。
Parameter Actions - Tableau *2

使い方

1.パラメーターの作成
タイトルを入力するくらいでしょうか。
f:id:zkn360:20190527165349p:plain


2.パラメーターを反映させるための計算フィールドを作成
とりあえず選択した値を確認するため、シートに表示するためのフィールドを作成しました。*3
f:id:zkn360:20190527165639p:plain


3.パラメーター アクションの設定
ダッシュボードにアクション元のシートとアクション先のシートを配置します。[ダッシュボード] メニューのアクション>アクションの追加>パラメーターの変更を選択します。
f:id:zkn360:20190527170306p:plain


名前とソースシート、アクションの実行対象を設定します。この辺は他のアクションと同じです。パラメーター アクションに固有なのはその下のターゲット パラメーターと値の箇所。ターゲット パラメーターはその名の通り、どのパラメーターに値を反映させるかを決めます。値は何の値をパラメーターに受け渡すかを設定します。今回は選択した箇所の [売上] の平均を求めたかったので設定は図のようになります。
f:id:zkn360:20190527170820p:plain


これで設定は出来上がり!
念のため検算します。この図では左側がソース シート、右側がターゲット パラメーターを数値で表示したものです。
f:id:zkn360:20190527171759p:plain


あとは計算フィールドなどの組み合わせで冒頭のようなダッシュボードを作成していきます。
使い道はベータ時代のこのブログが詳しいです。
Parameter actions (now in beta) extend Tableau interactivity: Here’s how and when to use them | Tableau Software


まだまだ使い道の模索が必要ですが、複雑な計算式を書かなくても済むようになる、複数選択が可能といった点がパラメーター アクションのメリットだと思います。
ちなみにダッシュボードを作成していて、選択のクリア (パラメーター値のリセット) が課題だなと思いました。なぜそう思ったかはダッシュボードを操作して確かめてみてください。

*1:DataDayOut のアレコレに伴い、ようやく触れるようになってきました。

*2:2019 年 5 月時点ではまだ日本語のオンライン ヘルプがないようです。

*3:よく勘違いされている方がいるのですが、パラメーターは作成しただけでは Viz に反映しません。Viz に反映できるよう計算フィールドを作成して、Viz に配置してください。

画像はデータを補足する ‐ ダッシュボードで画像を使う場合に気を付けること

最近、全面画像+シンプルなチャート (とその説明) といった構成のダッシュボードをよく見かけるようになりました。これは、Tableau 2018.3 かワークシートの背景色を「透過(色なし)」に設定できるようになったことで、写真の上にチャートを重ねられるようになった影響が大きいと思います。画像の上にチャートを配置すると、一見してとても美しい見た目のダッシュボードになるため非常に簡単にデータにインパクトを持たせることができます。一方で写真は情報量が多いためデータを補足するどころかデータの邪魔をしてしまう可能性も否めません。

もともとこの記事を書こうと思ったきっかけが MakeOverMonday W14 なのですが、この週のデータはどうもどシンプルだったようで画像を多用したダッシュボードが相当数乱発されていました。特に気になったのがこれ。(作者の方ごめんなさい) *1
f:id:zkn360:20190412165535p:plain

これのどこが気になるかという点をまとめたのがこちら。せっかくのデータを画像がむしろ邪魔してしまっているのがわかります。
f:id:zkn360:20190412165621p:plain

逆に、画像を上手に使用しているなと思ったのがこちら。シンプルですがうまく海のデータであることと主張を画像でさりげなく伝えています。
f:id:zkn360:20190412165638p:plain
https://public.tableau.com/profile/katie.bridges#!/vizhome/UKBeachLitteringMakeoverMonday2019Week14/UKBeachLitteringMakeoverMonday2019Week14


というわけで今回はダッシュボードやプレゼンテーションを作成するときに使用する画像の注意点について私なりにまとめていきます。

画像の情報量はデータの情報量を超えるべきでない

これに尽きます。あくまでデータを補足する、増強するのが画像を使用する目的なので画像の情報量をいかにして押さえるかが肝心です。

どんな画像を使うべきか

ではまずどんな画像を選ぶべきかについて考えてみます。

1. 著作権の確認が取れている画像

意外と多いのが、Google で検索した画像を使っていますというパターン。画像は当たり前ですが著作権があります。もし Tableau Public に公開する、コンペに使うといった場合に著作権侵害に該当したらどんなに Viz が素晴らしくてもアウトです。必ず著作権フリーの画像もしくは自分で撮影した画像を使用すべきです。

著作権フリーの画像サイトをまとめているのがこちら。
webdesign-trends.net

日本ではこの PAKUTASO も有名なようです。面白画像が多かったので一応紹介します。
www.pakutaso.com

2. 高画質の画像

画像がダウンロードできるサイトでは概ねサイズが選べるので、できる限り高画質のものを選びましょう。
f:id:zkn360:20190412165743p:plain
この後の画像加工の話でもしますが、画像は基本トリミングして拡大します。拡大した時に画像が荒くてドット絵のようにならないように、画像はできるだけ高画質のものを使用します。これは解像度の違う同じ画像を (ほぼ) 同じ部分を切り出して比較したものです。低画質のものはぼやけた印象になってしまっています。
f:id:zkn360:20190412165755p:plain

3.表現したい内容に沿った画像

自分が伝えたいストーリーに沿った画像を選びます。ストーリーと関係ない画像が入っていると内容に集中できなくなって何にも頭に残らなくなってしまいます。*2ネタで作ったのがこちら。どんなメッセージがあったか、メッセージと牛は関係あったのか、全くわからないと思います。しかもおそらくは「変な牛の画像」という印象しか残らないでしょう。
f:id:zkn360:20190412165836p:plain

4. 自然な画像

どんなにシンプルな画像だったとしても、画像は画像であるだけで情報量が多いです。そこに不自然な要素が加わるとよりおかしな点に見る側は注意をそらされてしまいます。通常存在しえない組み合わせのものが映っている、おかしなライティングがされている等です。

5. 人が映っている画像

人の表情は多くの情報を含んでおり、見た側が様々に解釈する余地があります。逆に言うと解釈する余地があるが故に、情報発信者側の意図しない意味として受け取られてしまう可能性があります。例えばこの画像、元サイトでは「下積み時代の苦労話をする起業家のフリー画像」というタイトルがついてましたが、人によっては「上司に詰められる部下」とも「寝坊して気まずい感じになってる人」とも受け取れるように思います。*3
f:id:zkn360:20190412165858j:plain
https://www.pakutaso.com/20180548128post-16091.html

人の画像を使う場合はより伝えたい部分にフォーカスした画像を使う、トリミングするべきです。例えば「最近の会議では PC で議事録を取るのがスタンダードだ」ということを伝えたい場合、会議室全体の写真を使うよりPC でメモを取っている部分にフォーカスしたものの方がよりストレートにメッセージが伝わるということ。

6. データ (っぽいもの) が入っている画像は避ける

これはダッシュボードに限った話かもしれません。よくタブレットや PC の画像だと、画像中にグラフやダッシュボードが含まれていることがあります。単純にグラフの上にグラフを重ねたら見づらいですし、混乱のもとです。そう考えると画像にデータやグラフが含まれるものは避けた方が無難と言えます。もうひとつ、直線っぽい絵が入ってるのも要注意かなと個人的には思います。チャートと交差してしまう可能性が高く、またチャートの意味をミスリードする可能性が否定できないからです。(この記事の最初の例もそうです。)

画像の情報量を減らす方法

使う画像が決まったら、画像の情報量を減らしてデータが際立つように調整しましょう。基本の手法はトリミング→拡大です。余談ですが、特別なソフトのインストールが不要という点で PowerPointWindows に付属のフォトが便利だと個人的には思っています。*4画像を拡大縮小するときに注意すべきは縦横比です。通常画像編集ソフトは元の縦横比を維持する設定がほとんどですが、意図的に縦横比を変えることができる場合不自然な感じになってしまいがちです。PowerPoint で言うと画像の書式設定の「縦横比を固定する」という箇所です。
f:id:zkn360:20190412170335p:plain

1. オープン スペースを作る

要は余白を作って文字やデータを邪魔しない空間を作りましょうってことです。もともと余白の多い画像を使うのも一手です。よくある画像でいうとこんな感じ。
f:id:zkn360:20190412170049j:plain

もしくは全画面に画像使うの自体をやめるのもアリかもしれません。その時は画像の開始位置がデータと重ならないようにするのがポイント。

2. 色数を減らす

色は以前ダッシュボードのデザインでも言及した通り、情報伝達に重要なポイントになります。そのため、画像中に含まれる色が余計な意味を想起させてしまう場合があります。それでもその画像を使いたい場合、思い切って画像をモノクロもしくはセピアにしてしまいましょう。画像の色を変えるくらいだったら、PowerPoint の図ツールの色の設定からできちゃいます。もしくは Windows フォト アプリのフィルターでもできます。
f:id:zkn360:20190412170214p:plain

3.レイヤーを重ねる

画像上に若干の透過率の領域を重ねて文字やデータが見えるようにするという方法です。レイヤーは画像全体に重ねても、部分だけでも効果的です。わかりやすい例で言うとこちら。*5
f:id:zkn360:20190412170351p:plain
https://public.tableau.com/profile/lm.7#!/vizhome/Landusepergramofproteinbyfoodtype/1


結局のところ、画像を使うにしてもいかに情報を制御するかという点に尽きますね。いっそ写真的な画像ではなく、イラストやフラット アイコンといった画像を使用するのもシンプル化に役立ちそうです。


この記事を書くにあたり、下記のブログを参考にしました。PowerPoint の作り方ガイド 125 ページも何と無料でダウンロードできちゃいます。文字や色彩についても言及されてるので、データ可視化する人も目を通しておいて損はないと思います。
visme.co

*1:ちょっとあまりにもアレなので、出典は差し控えさせていただきました。

*2:ビジュアル アナリティクスで言うところの視界の分断

*3:少なくとも私は。

*4:スマホなら簡単なアプリが色々あるんですけど、細かい調整をするのはやっぱり PC で作業したい。

*5:さすが LM-7 さん

Tableau 書式設定 - 線を極める

Tableau の最も難しい分野をご存知でしょうか。それは書式設定です。Tableau はデフォルトである程度美しい見た目が作成されますし、カスタマイズも事細かにできるのです。その事細かにできるがために、逆に難しいこととして知られる書式設定。そんな書式設定を極めた人に贈られる称号を、Tableau Sen Master と言います。
f:id:zkn360:20190330172635p:plain

この度 Tableau Sen Master の称号を受けましたので、Tableau の書式設定、特に線についてまとめてみようと思います。

線の書式設定は、枠線と線の 2 種類がある

これが最も書式設定を難しく感じさせる原因と言っても過言ではありません。書式設定を行う時、どれがどの線?と悩むことが多いのはこのせいです。
f:id:zkn360:20190330180121p:plain

設定対象は、シート (全体)、行、列の他特定のフィールドも選べる

単純に行と列を指定するだけでなく、フィールドも指定することができます。これがあることで、同一シート内であってもフィールドごとに色を変えることができます。
f:id:zkn360:20190330180351p:plain
例えばこれは (線ではありませんが) 一例です。フィールドごとにタイトルのフォントを別々に指定しているため、フィールド内での文字色が異なっています。(棒グラフ自体の色はもちろんマーク カードの「色」で設定を行っています。)
f:id:zkn360:20190330180953p:plain

どれがどの線かを知る

ここがこの記事の本題です。すべてを網羅するのは大変なので、シンプルな画面を例に説明していきます。

枠線の書式設定

行と列の境界線

それぞれ赤と青の線で設定してみました。比較的ここはわかりやすいと思いますs。
f:id:zkn360:20190330181337p:plain

実際の Viz で見てみるとこんな感じになります。
f:id:zkn360:20190330181451p:plain

行と列の境界線にはレベルがある

行と列の境界線の下部にはレベルという箇所があり、それぞれスライダーで移動できるようになっています。大雑把に言うと、右に動かすとより細かく線を入れることになり、左に動かすとより大きな枠で線を入れる形になります。(相対的に線の本数が減って見える)

行の境界線のレベルを右に動かすと、ヘッダー部分にかかる線が確認できます。
f:id:zkn360:20190330181702p:plain

同じように列の境界線レベルを右に動かすと、セルごとに線が入ります。
f:id:zkn360:20190330182144p:plain

今度は列の境界線レベルを左に動かすと、ペインの境目の線が消えます。
f:id:zkn360:20190330182131p:plain

目盛り線の書式設定は「線」の書式設定

上記のような図だと、目盛りの線をカスタマイズしたいという要望もあると思います。ここが、難しい。というのは、目盛りの書式設定は枠線の書式設定ではなく「線」の書式設定だからです。*1しかも線の書式設定もどれがどの線かというのが見つけ辛いのが実情です。

ちなみにチャート内の領域の目盛り線はなんと「グリッド線」の設定です。
f:id:zkn360:20190330182558p:plain

線の書式設定には「軸ルーラー」もあるのですが、これは目盛りとチャートの間をつなぐ線の書式設定です。*2
f:id:zkn360:20190330182650p:plain


とりあえずこの辺りがサクサク設定できると、だいたいのチャートの書式設定はうまくいくと思います。

書式設定は表現の種類を増やす一手

ところでなんで書式設定なんかやらなきゃいけないのかというと、ひとつは既存のチャートを Tableau に置き換えるために全く同じ見た目を求められたときというのが代表的なシチュエーションかと思います。そういう場合は粛々とやってください(笑) それ以外のシチュエーションがあるのかということで、ひとつ紹介しておこうと思います。それが Viz in Tooltip です。Viz in Tooltip をどういう風に使うとカッコいいか?ということを考えていた時に、下記のブログに出会いました。このブログでは Viz in Tooltip の利用法をいろいろ検討しているのですが、その中でツールヒント内のセクションを空のシートの書式設定で作ってしまうという技を紹介しています。書式設定がこんなことにも使えるのかと驚いたのを覚えています。*3ぜひみなさんも書式設定をマスターして Tableau Sen Master の称号を手に入れてくださいね。
www.dataplusscience.com

*1:毎度毎度どこの設定だったか探してます…この記事書いてる時も結構探した。

*2:これがわかりにくいと思うのは私だけ?

*3:案の定再現は結構大変だった。

ツールの使い方がわからないといって分析ができないわけではない (Viewer だって分析できるもん!)

Tableau の基本的なライセンス形態は、CreatorExplorer、Viewer の 3 種類です。*1それぞれ分析の各フェーズにおける役割が違います。Creator はデータの接続、整形、分析、共有などのすべてを行うことができ、使用できる製品は Tableau Prep、Tableau Desktop、Tableau Server (もしくは Online) です。Explorer と Viewer は Tableau Server (Online) を使用します。Explorer は 用意されたデータソース (tds) を元に新規ワークブックの作成や既存ワークブックの編集を Tableau Server 上で行うことができるのが特徴です。一方 Viewer は Creator もしくは Explorer が作成したワークブックの閲覧と、フィルターやパラメーターの操作を行い、ワークブック自体の作成や編集は行いません。

f:id:zkn360:20190319152606p:plain
※ あくまで筆者の理解です。細かい違いは必ず最新の情報を確認ください。

一般に、Viewer はデータを見て判断する人ということで、Viewer 自ら分析をするということは想定されていません。*2なので、Viewer の人たちは Tableau の Viz の作り方も知らないし、特段知る必要もないわけです。が、こういった棲み分けだと Viewer の人たちに必要だと言われるがまま Viz を作りまくり、ワークブックの作成とメンテに追われる Creator が疲弊していくという問題が発生しがちです。そこで、Viewer ライセンスでも操作でき、なおかつ操作が簡易なものを作れないか、というのが今回の記事です。(前振りが長くてすみません。。)

結論から言ってしまうと、今回は基本のパラメーターの使い方でこんなの出来たよ!って感じのご紹介です。出来上がりイメージはこちら。ユーザーが散布図の縦軸と横軸を (用意された項目から) 自由に設定でき、分析の粒度 (マークの粒度) とついでにメジャーによる色付けもできるようにしちゃおう!ってものです。これなら Creator がひとつダッシュボード作っておけば、あとは Viewer が好きに操作するだけ!メンテもダッシュボードひとつ分で済みます。

というわけで作り方はこちらから。

1.パラメーターの作成

ユーザーが項目を選択できるよう、パラメーターを作成します。

1-1.縦軸

縦軸でも横軸でも良いのですが、散布図の軸をどの数値にするか選択するためのパラメーターを作成します。パラメーターの作成から、プロパティを文字列、許容値をリストにします。許容値のリストにはデータソースに含まれるメジャー値を適宜リストアップしていきます。
f:id:zkn360:20190319154154p:plain

1-2.横軸

縦軸パラメーターを複製して、リネームします。以上。
f:id:zkn360:20190319154500p:plain
f:id:zkn360:20190319154514p:plain

1-3.集計の粒度

集計の粒度を指定するためのパラメーターを作成します。縦軸、横軸はメジャー値から作成したのに対し、今度はディメンションを適宜設定していきます。
f:id:zkn360:20190319154651p:plain

1-4.色付け基準

今回はメジャー値を元に色付けするようにしたので、またも縦軸 (もしくは横軸) 用に作成したパラメーターを複製して、リネームします。ただし、色付けは不要という人のために、リストに「なし」という項目を加えておきました。
f:id:zkn360:20190319154913p:plain

2.計算フィールドの作成

たまにパラメーターを作成したのに画面に反映しない!というお問い合わせをいただきますが、パラメーター単体では何にもなりません。パラメーターを変数として変化する項目を作成しましょう。

2-1.縦軸

f:id:zkn360:20190319155218p:plain
CASE [パラメーター].[縦軸]
WHEN "売上" THEN [売上]
WHEN "利益" THEN [利益]
WHEN "割引率" THEN [割引率]
WHEN "数量" THEN [数量]
WHEN "出荷日数" THEN [出荷日数]
END

2-2.横軸

縦軸の計算フィールドを複製してリネームと、対象のパラメーターを変更しておきます。
f:id:zkn360:20190319155501p:plain
CASE [パラメーター].[横軸]
WHEN "売上" THEN [売上]
WHEN "利益" THEN [利益]
WHEN "割引率" THEN [割引率]
WHEN "数量" THEN [数量]
WHEN "出荷日数" THEN [出荷日数]
END

2-3.集計の粒度

軸とほぼ一緒です。
f:id:zkn360:20190319155614p:plain
CASE [パラメーター].[集計の粒度]
WHEN "オーダーID" THEN [オーダー ID]
WHEN "カテゴリ" THEN [カテゴリ]
WHEN "サブカテゴリ" THEN [サブカテゴリ]
WHEN "出荷モード" THEN [出荷モード]
WHEN "地域" THEN [地域]
WHEN "製品名" THEN [製品名]
WHEN "都道府県" THEN [都道府県]
WHEN "顧客名" THEN [顧客名]
WHEN "顧客区分" THEN [顧客区分]
END

2-4.色付け基準

軸の計算フィールドを複製してリネーム、対象のパラメーターの変更、あと「なし」選択時の項目を追加しておきます。
f:id:zkn360:20190319155951p:plain
CASE [色付け基準 (メジャー値)]
WHEN "売上" THEN [売上]
WHEN "利益" THEN [利益]
WHEN "割引率" THEN [割引率]
WHEN "数量" THEN [数量]
WHEN "出荷日数" THEN [出荷日数]
WHEN "なし" THEN NULL
END

似たような作業を延々やっていくだけといえばやっていくだけですね。

3.Viz の作成

3-1.基本の画面構成

列シェルフに [横軸] (計算フィールド) 、行シェルフに [縦軸] (計算フィールド) 、詳細に [集計の粒度] (計算フィールド) 、マークシェルフの色に [色付け基準] (計算フィールド) を配置します。それと、各パラメーターはパラメーター コントロールの表示をチェックして、パラメーター値を変更できるようにしておきましょう。
f:id:zkn360:20190319160345p:plain

これだけでも十分なんですが、ユーザー フレンドリーにするために少し見た目の調整をしておきます。

3-2.軸の調整

まず選択した項目が何なのかわかるようにしておきます。列シェルフに [横軸] (パラメーター) 、行シェルフに [縦軸] (パラメーター) を追加します。
f:id:zkn360:20190319160622p:plain

こうなると、[横軸] とか [縦軸] とか表記されているのが邪魔なので、軸の編集で軸の名前を非表示にします。どのバージョンから名前を入力しないのができるようになったんだっけ…
f:id:zkn360:20190319160730p:plain

パラメーターのフィールド ラベルも余分なので非表示にします。画面は列のフィールド ラベルですが、行のフィールドラベルも非表示にしてください。
f:id:zkn360:20190319160845p:plain

これでだいぶすっきりしたはずなので、後はダッシュボードでユーザー フレンドリーに!かわいらしく!使いやすい感じに編集してください。ダッシュボードの操作方法をタイトルとかに併記するとかっていう小技も地味に使えます。*3
f:id:zkn360:20190319161152p:plain

これにさらにフィルターを組み合わせたり、需要に応じてより複雑な Viz を作成することももちろん可能です。フィルターだけだとデータの「絞り込み」しかできないですけど、パラメーターを使うとより自由度の高い Viz になりますね。

*1:正確な説明はこちらをご参考ください。 www.tableau.com

*2:フィルターを駆使して自分の知りたいデータを抽出するという意味ではありません。

*3:そのうちテキスト (文字) に関する Tips も書きます。多分。

ヒストグラムと平均線 - Tableau の場合

よくある質問のひとつ「ヒストグラムに縦線 (補助線) を入れたい」というのが今回のお題です。イメージはこちら。
f:id:zkn360:20190308172027p:plain

一見簡単そうなのですが、ヒストグラムの性質と Tableau の機能の両方を知らないとできないちょっと厄介な Viz だったりします。今回はヒストグラムの作り方から始めて完成を目指したいと思います。データセットはおなじみの「サンプル - スーパーストア」です。

まずは普通のヒストグラムから

何はともあれヒストグラムが作れないことには始まりません。まずは基本の作成方法です。

表示形式からヒストグラムを作成する

最も簡単なのは、Tableau のビルトイン機能である「表示形式」を使うことです。ヒストグラムにしたいメジャーをひとつ選択すると、表示形式からヒストグラムが選択できるようになります。(今回は [利益] を使用します。)
f:id:zkn360:20190308142957p:plain

表示形式の中のヒストグラムの図を選択すると、すぐにヒストグラムが出来上がります。簡単!
f:id:zkn360:20190308143119p:plain

ビンとは

ワークシートをよく確認すると、列シェルフとディメンションに [利益(ビン)] という項目が出来ていることがわかります。このビンとは、ヒストグラムの幅のことでいわゆる階級幅のことです。*1表示形式からビンを作成すると、自動計算された値が設定されています。これを変更するにはディメンション内の [利益(ビン)] > 編集 > ビンの編集 を選択し、ビンのサイズを直接入力します。今回は 10000 を指定しました。(図はデフォルトの値になってますが汗)
f:id:zkn360:20190308143946p:plain

縦軸の編集

これで完成でもいいのですが表示形式からヒストグラムを作成した場合、縦軸が [利益のカウント] に自動的に指定されています。これを顧客数に変えたい場合はディメンションから [顧客名] を行シェルフに追加すればいいのですが、顧客名はディメンションのためメジャーに変換が必要です。行シェルフの [顧客名] > メジャー > カウント(個別)*2 を選択します。
f:id:zkn360:20190308144443p:plain

これで顧客数を縦軸とするヒストグラムができました。
f:id:zkn360:20190308144706p:plain

あとはもともとあった [利益のカウント] を削除*3します。これで単純なヒストグラムが完成しました。
f:id:zkn360:20190308144829p:plain

ビンはメジャーから直接作成可能

慣れてくると縦軸の再設定が面倒なので、いきなりビンを作成してしまった方が手間が省けます。ビンは対象のメジャーを選択 > 作成 >ビン からでも作成できます。
f:id:zkn360:20190308145029p:plain

ビンに平均線は追加できない

あとは平均線を追加するだけ、ということでアナリティクス タブから平均線を追加しようとすると問題が発生します。[利益] に対して平均線を追加したいのですが、メジャーの選択肢が表示されません。
f:id:zkn360:20190308145312p:plain

とりあえず「表全体」を選択して平均線を追加すると想定と異なる結果になります。
f:id:zkn360:20190308150157p:plain

結論から言うと見出しの通りビンに平均線が追加できないので、ワークシート内にある他のメジャー (この場合は [個別のカウント(顧客名)]) に対しての平均線が追加された形になります。


コレジャナイ!!


なんですが、諦めるのはまだ早いです。

メジャーを追加すれば平均線が利用できる

ここまでのところで「ビン」に対しては平均線*4が追加できないことがわかったので、逆にメジャーを組み合わせれば出来そうだということがわかります。ここからは機能や計算を知らないとできないのでこの記事にまとめておこうと思います。ということで手順です。

1. メジャーを追加する

列シェルフにメジャーを追加します。今回の場合は [利益] です。

2. メジャーをディメンションに変換する

追加した [利益] をクリック、メニューから「ディメンション」を選択します。
f:id:zkn360:20190311100659p:plain

3. 二重軸にして表示を重ねる

Tabloid *5にはおなじみの手順ですね。
f:id:zkn360:20190308160943p:plain

表示が重なりました。
f:id:zkn360:20190308161007p:plain

4. 軸を同期させる

Tabloid にはおなじみの手順ですね。(再) 利益軸*6をダブルクリックまたは右クリック >軸の編集 で「二軸を同期」にチェックを入れます。
f:id:zkn360:20190308161104p:plain

5. 見た目を調整する

二重軸にするとヒストグラムの表示が線グラフ表示に変わってしまっています。これを調整していきます。

5-1. 色の準備

[メジャーバリュー] が色に設定されていますが、[利益] と [利益(ビン)] で個別に色を設定したいのでまずこれを削除します。

5-2. グラフ形状の変更

線グラフを棒グラフに変更します。 5-1. と 5-2. は順不同で大丈夫でしたね…

5-3. 色の調整

実は見た目上 [利益] のグラフは表示されている必要がないので、見えないように魔法をかけます。マーク シェルフ > [利益] > 色 > 不透明度 でデフォルト 100% になっている箇所を思い切って 0% にします。
f:id:zkn360:20190308161846p:plain

これで見た目は元のヒストグラムと全く同じ形になったはずです。
f:id:zkn360:20190308161954p:plain

5. 平均線を追加する

ようやく平均線の出番です。アナリティクス タブから平均線を追加しましょう。
f:id:zkn360:20190308162049p:plain

[利益] が追加できるようになっていますので、 [利益] に対して平均線を追加します。
f:id:zkn360:20190308162142p:plain

6. 平均線を追加する (検算は確実に&リファレンス ライン)

手順 5 で平均が追加できた、終わったと思った方、それはです。この「サンプル - スーパーストア」の利益の平均額は 2739 円です。ところが上記では 3181 円とずれがあります。これは手順 1 で利益をディメンションに変換していることに由来します。ディメンションに変換した場合、複数のレコードが同じ金額だった場合、それは 1 つとしてカウントされます。つまり合計と分母がずれちゃってるんですね。これを防ぐためにリファレンス ラインを利用します。

6-1. 集計の粒度に影響を受けない平均値を作成する

Tableau はワークシート内に配置した情報を元に集計を行います。今回配置したい平均値は「すべての値の平均値」なのですがここまでの手順だと「すべての値」を表現する粒度がありません。そこで計算式を利用してワークシート内の集計の粒度に影響を受けない値を計算フィールドで作成します。計算式は下記です。(フィールド名は任意でどうぞ。今回は便宜上 [平均利益] としました。)
f:id:zkn360:20190308171305p:plain
{FIXED: AVG([利益])}

*** 6-2. 詳細に追加する
リファレンス ラインで上記の [平均利益] が反映できるよう。マーク シェルフの [利益] の「詳細」にメジャーのリストから [平均利益] をドラッグ アンド ドロップで追加します。
f:id:zkn360:20190308171527p:plain

その後でアナリティクス タブのリファレンス ラインを[利益] に対して追加します。リファレンス ラインの編集ダイアログで、線セクションの値を [利益] から [合計(平均利益)] に変更します。
f:id:zkn360:20190308171846p:plain

これで正しい平均線が追加できました。あとは 利益軸の表示をオフにする (「ヘッダーを表示」のチェックを切る)、平均線の表示を調整する、全体の色味を整える等の調整を行えば、トップに表示したような形の Viz を作成することができます。

意外と簡単なようで、奥の深いヒストグラムに補助線を追加する方法でした。もう少し追及したい方は KB も参考になります。
https://kb.tableau.com/articles/howto/histogram-of-aggregated-values?lang=ja-jp

おまけ: ビンでフィルター

あまり知られていない機能なのでここで紹介します!(笑) ビンをフィルター カードに入れると「値の範囲」というフィルターが出てきます。これはビンの数を指定してフィルターできる機能なんですね。ゼロを起点にして前後 5 つずつの階級幅だけを見たい、外れ値が遠くにありすぎて全体が見づらい時などにご活用ください。*7
f:id:zkn360:20190308172648p:plain

*1:大雑把にいうと棒グラフの太さです。

*2:COUNTD のこと

*3:外すとか取るとか言ったりします。

*4:リファレンス ラインやリファレンス バンドも同様です。

*5:Tableau ユーザーのこと

*6:後から追加した方のメジャーの軸

*7:遠くの外れ値はレコード数も少ないことが多く、選択して除外しようにも選択しづらかったり、そもそも見えなかったりすることが多いので…