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

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

Tableau で政令指定都市

皆さんこんにちは。Tableau で地図を利用していると、「あれ?」って現象よく起きませんか。最も聞かれるのは「名古屋市 (神戸市、広島市 etc) が表示できないんです」という声。実はこれ、政令指定都市に起因する問題なんです。今回は Tableau で政令指定都市を扱う際の具体的な方法と注意事項を確認していきましょう。

そもそも政令指定都市とは

政令指定都市は現在 20 市が該当し、市でありながら行政区を持つちょっと特別な区です。詳細は ja.wikipedia.org を確認してください。

とりあえず政令指定都市を表示する

Tableau で地図を利用するとき、データに対して地理的役割を設定する、というのはご存知だと思います。
基本的な考え方として、地理的役割の「市区町村」は点で表記するとき、「郡」はポリゴン表記をしたいときに設定します。ここでは埼玉県を例にしてみていきます。

こんなデータがあったとします。数字は図書館の数です。埼玉県はさいたま市のみが政令指定都市です。
f:id:zkn360:20210128161309p:plain

市区町村のデータに対して、地理的役割「市区町村」を付与すると地図上の点として表現できます。

f:id:zkn360:20210128161450p:plain

市区町村のデータに対して、地理的役割「郡」を付与すると、ポリゴン地図として表現できるはずなのですが、さいたま市が消えてしまいます。

f:id:zkn360:20210128161602p:plain

消えたさいたま市を復活させるにはどうしたらいいかというと、まずは行政区を含むデータを用意する必要があります。

f:id:zkn360:20210128162103p:plain

この行政区を含むデータに対して、地理的役割「郡」を付与します。すると、消えたはずのさいたま市が復活します笑

f:id:zkn360:20210128162505p:plain

政令指定都市をひと固まりで表示する

政令指定都市をポリゴンで表示する方法はお分かり頂けたと思いますが、データの集計上、市単位で表示したいということはよくあると思います。ここでは政令指定都市をポリゴンかつひと固まりで表示する方法について記載します。

基本方針はデータのグループ化

Tableau では、地図上の領域をまとめて表示する機能があります。具体的な方法は下記のオンライン ヘルプにあります。
help.tableau.com

このオンライン ヘルプでは 3 つの方法が紹介されてまして、政令指定都市の表示でも同じ方法を使用することができます。ところが、明確な理由は不明なんですが*1、オプション 1 はうまくいくのですが、オプション 2 と 3 は表示には成功するのですが、都道府県でフィルターをかけると想定外の動作になります。*2
そのため、オプション 1 について見ていきます。

最初に地図上でグループ化することが重要

オプション 1 ってどんな方法かというと、地図上で領域を複数選択してグループ化するというやり方です。
さいたま市の場合、さいたま市xx区を全部選択して、クリップマークのグループ化を選択するだけなのですが、グループ化する詳細レベルを選択できます。*3ここで、都道府県と市区町村の両方のレベルが含まれている方を選ぶことが重要です。*4

f:id:zkn360:20210128180042p:plain

そのあとグループの編集が必須

グループ化したら OK のような気もしますが、残りの政令指定都市どうすんの、ということでグループの編集をします。ここで重要なのは「’その他’を含める」オプションを外すこと。やらないと正しく表示できません。残りの政令指定都市はぽちぽちグループ化していってください。*5名前は編集しちゃって大丈夫です。

f:id:zkn360:20210128181657p:plain

完成!!

これで、Viz 上の詳細レベルをグループ化した方のデータに置き換えれば完成です。お疲れ様でした。

f:id:zkn360:20210128182041p:plain

参考 Viz

せっかく政令指定都市を表示する Viz を作成したので貼り付けておきます。ご参考まで!

*1:多分詳細レベルの情報の問題と思われるけど、真偽は不明

*2:この理由について調査を依頼したけど、日本語ワカンネって理由で調査進まず

*3:地理的役割の「次から作成」と同じイメージ

*4:理由は上述の通り、フィルターが正常に作動しなくなるからです。

*5:20 個なので、気合いで乗り切ってください

Tableau でネットワーク図を書いてみる

Tableau あるある
A 「Tableau でネットワーク図書けますか」
B 「(頑張れば、あるいは、技術的には) 可能です 」
A 「(察し)」

Tableau Desktop はあくまで既にあるデータを可視化するためのツールです。ネットワークの要素を描画することはできても、「いい感じに」「バランスよく」ネットワークを書いてくれるわけではないので上記のようなやり取りになってしまいます。固定的な配置のネットワークならいざ知らず、ネットワークの要素がどのような近さなのか、どういった関係性かわからない場合では正直 Tableau だけでは解決できない問題になります。それでもネットワーク図書きたいんです、必要なんです、という場合には Tableau 以外のツールの力を借りる必要があります。

この記事では、レ・ミゼラブルの登場人物*1のデータを利用して、Tableau でネットワーク図を書く方法をまとめます。
f:id:zkn360:20200811154817p:plain
本記事は下記を参考にしました。直接元記事参照される方はどうぞ。
https://ladataviz.com/2019/12/15/build-a-network-graph-in-tableau-in-three-steps/


Tableau でネットワーク図を書く流れ

1.データ準備

データ準備が一番大変かもしれません。形式は JSON ファイルで用意します。この際必ず必要なフィールドが node と links になります。これらのフィールドの要件は下記になります。

  • node には id が必要。これがネットワーク図で言うところの「〇」の部分に相当します。
  • links には source と target が必要。どの id 同士につながりがあるのか、ネットワーク図で言うところの線の部分に相当します。

下記はサンプルです。

{ 
 "nodes": [
    { "id": A },
    { "id": B }
  ],
  "links": [
    { "source": A, "target": B }
  ]
}

こればっかりは Tableau ではどうしようもないので、サンプル データを見繕うなり、R や Python 利用してどうにか作ってください。
ネットワーク図の作成を試してみたいだけであれば、レ・ミゼラブルのデータは下記から取得できます。*2

レ・ミゼラブルの人物相関図とデータ D3.js v4 Force Directed Graph with Labels - bl.ocks.org

2.ネットワーク ジェネレーターにデータを投入する

ネットワーク ジェネレーターに用意した JSON ファイルを投入すると生成される nodes.csv と links.csv を取得します。

ネットワーク ジェネレーター Network data generator for Tableau / Tristan Guillevin / Observable

data = FileAttachment("mary@1.json").json()
という行の後ろにあるクリップのマークをクリックすると [Replace] というボタンが出てきます。クリックするとファイルのアップロード メニューが出てきますので用意した JSON ファイルを投入します。

f:id:zkn360:20200811162009p:plain

データを投入すると、ただちに CSV が生成されますので、ダウンロード ボタンから CSV を取得します。*3忘れずに 2 種類とも取得してください。
ついでにこの時点でネットワーク ジェネレーター側でもネットワーク図描画してくれるので、形をチェックしたり、ネットワーク同士の距離を調整したりもできます。*4

3.Tableau で Viz を作成する

データができたので、Viz を作成します。基本は Spider チャートと散布図を二重軸で重ねたものを作成すれば OK です。…って面倒ですよね? 参考元のブログではなんと Tableau のサンプルまで用意してくださってます。

ネットワーク図 テンプレート https://public.tableau.com/profile/guillevin#!/vizhome/Template-NetworkGraph/SimpleNetworkGraph

テンプレートのワークブックをダウンロードしたら、先ほど作成、ダウンロードしたデータに差し替えます。差し替える方法は何でもいい*5と思いますが、最終的に nodes.csv と links.csv を id で結合したものがデータソースになります。
f:id:zkn360:20200811163858p:plain

データを差し替えた時点でネットワーク図自体は出来上がっていますが、さらに Tableau で見た目を調整します。例えばレ・ミゼラブルのデータには人物のクラスター (group) のデータがあるので色付けしてみたり、登場人物名 (id) をラベルにしてみたり、value (おそらく登場した回数?) でネットワークの線の太さを変えてみたり。こういった調整ができるのが Tableau のいい所です。

実際に作成したネットワーク図はこちらからどうぞ。https://public.tableau.com/profile/naoko.ozaki#!/vizhome/LesMiserablescharacternetworkgragh/Characterco-occurenceinLesMisrables


データ準備さえどうにかなれば、意外と簡単にネットワーク図書けちゃいました。とはいえ、オリジナルの記事を書いていただいた Tristan Guillevin さんに感謝です。ぜひ皆さんも試してみてください。*6

*1:レ・ミゼラブル1巻半ばで挫折したので、人物相関が正しいかは皆様の判断にお任せします

*2:私はコピペして拡張子 .json で保存しました。ダサい方法ですみません。。

*3:なぜかダウンロードしたら CSV として認識されなかったので拡張子を編集して CSV ファイルにしました。

*4:円の大きさも調整できるけど、それこそ Tableau でやればいいので、特に気にならないなら全部デフォルト設定で良いと思います。

*5:ファイルの接続の編集でも、データソースの置換でもお好きな方法でどうぞ。

*6:Tableau Public にパブリッシュする際は、ぜひ Tristan Guillevin さんにメンションを!

非エンジニアのための Tableau パラメーター

こんにちは。突然ですが、Tableau のパラメーターを取り上げたいと思います。今回はパラメーター アクションはちょっと触れるだけなので、パラメーター アクションについて知りたい方は別の記事をご参照ください。

Tableau を始めて少し経った人たちが口々に言うのが「パラメーター」って何に使えばわからない、ということ。かく言う私もプログラミングなんて、新卒で入った会社で [show text "Hello World!"] って習った程度でどういう場面で使用すべきか正直良くわかっていませんでした。それで思い立ってユーザー会向けに勉強用コンテンツを作成していたのですが、昨今の状況で公開の目途が立たなくなってしまったため今回の記事にしようとした次第です。

そもそもパラメーターとは

もしかして信じられない人もいるかもしれませんが、私を含め日常的にコーディングをしない人はパラメーターが何か、ということ自体わかりません。ということで、なるべく平易な言葉でまとめてみました。

パラメーターとは
1.外から渡す
2.何らかの値で
3.結果に影響するもの

各項目についてみてみましょう

パラメーターを「外から渡す」とは

  • Tableau の viz 内ではユーザーが選択する

・パラメーター コントロールから入力する
いわゆるパラメーター (今回の記事の対象)
・Viz から動的に選択する
パラメーター アクション (今回の記事の対象外)

  • システム的に渡す (今回の記事の対象外)

・URL の一部に含める
・カスタム SQL の変数
JavaScript の変数
などなど

パラメーターは「何らかの値」

細かい解説は省いて、Tableau でパラメーターを作ってみるのが理解の早道だと思います。
Tableau でパラメーターを作成する際に決める項目は下記です。パラメーター コントロールはユーザーが値を選択するためのインターフェースということを考慮すると決めやすいと思います。

  • パラメーター名

ユーザーのアクションを促す名前が望ましい。(xx を選択、xx を入力 など)

  • データ型

ユーザーに入力して欲しいデータの形式を選択する。(浮動小数点、整数、文字列、ブール、日付、日付と時刻)

  • 現在の値
  • ワークブックを開いたときの値

2020.1 で追加された設定。日付などで最新の値を指定したい場合などに使用する。

  • 表示形式

書式設定

  • 許容値

選択肢から選ぶのか、値を直接入力するのか等を設定する

パラメーターを「結果に影響させる」

パラメーターを作成しただけでは、何も起きません。パラメーターと Tableau のそのほかの機能を組み合わせることによってはじめてパラメーターは作用します。つまり何のためにどんな機能と組み合わせるのかが重要で、また、どのようなシナリオのときに使うべきかが本質なわけです。

パラメーターのメリットは、ユーザーが値をコントロールできるのはもちろんのこと、1か所の入力で複数個所をコントロールできること、機能同士の掛け合わせができることなどがあります。これを踏まえて、Tableau でパラメーターを使用する方法についてみていきましょう。


Tableau でパラメーターを利用する

今回は利用方法をいろんなパターンで示すことを目標とします。ひとつひとつの手順を解説すると大変長くなってしまうため、詳細についてはワークブックをダウンロードして内容を確認してください。公式の KB などがざっと検索した範囲で見つかったものはリンクも付記してあります。

ワークブックはこちら Tableau Public


基本の使い方

1.Top N

① 整数型のパラメーターを作成
f:id:zkn360:20200306132712p:plain
② フィルターにディメンションを追加、条件を上位>パラメーターで指定
f:id:zkn360:20200306132726p:plain
③ パラメーター コントロールを表示する
f:id:zkn360:20200306132741p:plain
KB https://kb.tableau.com/articles/howto/using-a-top-n-parameter-to-filter-a-table?lang=ja-jp


2.タイトルなど文字列へ値を挿入する

① 任意のパラメーターをタイトルやテキスト項目に追加
f:id:zkn360:20200306132758p:plain
KB https://kb.tableau.com/articles/howto/adding-dynamic-descriptions-based-on-selection?lang=ja-jp


3.リファレンス ライン

① 整数型のパラメーターを作成
f:id:zkn360:20200306133020p:plain
② リファレンス ラインを追加
f:id:zkn360:20200306150034p:plain
③ パラメーター コントロールを表示
KB https://kb.tableau.com/articles/howto/creating-adjustable-reference-lines?lang=ja-jp

4.セットのメンバー

セットの条件に、パラメーターを使用した式を利用します
f:id:zkn360:20200306150143p:plain

※ これはセットを利用しなくても計算フィールドでも同じことはできます。結合セットを利用したいとかその他の機能と組み合わせる場合はセットが便利です。

5.Top N とそれに近いメンバーを表示する

ちょっと面白い例です。上位 N 位までを表示して (1.Top N と同じ) それに加えて、N+n 位まで表示する方法で、ランク外ではあるもののもう少しでランクインできそうなメンバーを示します。これは計算フィールドを利用します。
f:id:zkn360:20200306150908p:plain

4. セットのメンバー の手順から続けて
① 目標判定のための計算フィールドを作成
f:id:zkn360:20200306150723p:plain
念のため、この計算フィールドはリファレンス ラインを超えた項目からカウント アップ、リファレンス ラインを下回った項目からマイナスでカウント ダウンしています。リファレンス ラインから数えて n 番目を数えています。

② 上記の計算フィールドをフィルターへ
表示させたい範囲をマイナス n で指定する

6.ビンのサイズを指定する

これはオーソドックスな利用方法です。ビンの作成時にビンのサイズをパラメーターで指定すると、パラメーターコントロールを利用してビンのサイズを変更することができます。
f:id:zkn360:20200306151229p:plain

7.結合セット

セットの便利な点は、セットを 2 つ組み合わせて結合セットを作成できることです。セットを 2 つ選択して右クリックで結合セットを作ることができます。
f:id:zkn360:20200306151606p:plain
結合セットを使用する場合は結合条件に注意する必要があります。言葉だとわかりにくいので、図にしてみました。
f:id:zkn360:20200306151757p:plain

結合セットを利用すると、下記のような表現ができます。もちろんパラメーターと組み合わせて範囲を変更することもできます。
f:id:zkn360:20200306151913p:plain

手順はこれまでの手順とほぼ同様のため省略します。詳細はワークブックをご確認ください。

8.パラメーター アクション

パラメーター アクションはパラメーター コントロールを利用するのではなく、Viz の任意のマークを選択し、その値をパラメーターとして利用する方法です。これだけで相当数のブログ記事を検索して見つけることができると思います。ので、今回の記事では扱いません。

Online help パラメーター アクション - Tableau

ちょっと応用

基礎編では 1 つの項目を変化させるためのパラメーターを扱ってきましたが、応用編では複数の項目、シートにまたがる利用方法をご紹介します。

9.表示するメジャーを変更する

同一のシート内で別のメジャーを表示させたい場合に利用します。例えば「サンプル - スーパーストア.xlsx」で売上と利益と数量をパラメーターで切り替えて表示したいとします。
① リスト形式のパラメーターを作成
f:id:zkn360:20200306152748p:plain
② 計算フィールドを作成
f:id:zkn360:20200306152816p:plain
③ 上記の計算フィールドを使用して通常の Viz を作成する
④ パラメーター コントロールを表示

Online Help 例 – パラメーターを使用したメジャーのスワップ - Tableau

10.詳細レベルの変更

9. では表示するメジャーを変更しましたが、ここでは詳細レベルに利用するディメンションを切り替えます。とはいえ手順はほぼ同じです。
① リスト形式のパラメーターを作成
f:id:zkn360:20200306153139p:plain
② 計算フィールドを作成
f:id:zkn360:20200306153145p:plain
③ 上記の計算フィールドを [詳細] として使用する通常の Viz を作成する
④ パラメーター コントロールを表示

11.集計レベルの変更

10. では詳細レベルとして使用するディメンションそのものを切り替えましたが、ここでは単一の日付のディメンションで日付の粒度を切り替えます。
① 日付の粒度を指定するパラメーターを作成
② 日付の粒度を変更する計算フィールドを作成
f:id:zkn360:20200306154017p:plain

以下はオプションです。
日付の粒度を変更すると、棒グラフの幅が単一だと見栄えが悪くなります。それを避けるために棒グラフの幅を調整する計算フィールドを作成します。
f:id:zkn360:20200306154158p:plain
この計算フィールドを棒グラフの幅とする Viz を作成します。
f:id:zkn360:20200306154306p:plain

12.日付ずらし

昨年と比較して今年のトレンドは早いのか遅いのか、どのくらい違うのかを比較するために日付をずらします。
f:id:zkn360:20200306162957p:plain
① 日付をずらすためのパラメーターを作成
ここでは週をずらす想定です。
② 特定の期間のメジャーをずらすための計算フィールド作成
「サンプル - スーパーストア.xlsx」を利用しているため、特定の 2 年分のデータをあらかじめ別の計算フィールドで取り出してあります。
f:id:zkn360:20200306163250p:plain
③ 不連続の年/月/日/週数を連続に変更した軸を利用して Viz 作成
連続の日付を選択すると図が重ならないので注意

13.表示するシートの変更 (シート スワップ)

ダッシュボード上で表示するシートを切り替える (スワップ) する方法。
① 表示したいシートをそれぞれ作成 (a と b)
② 表示するシートを選択するパラメーターを作成
f:id:zkn360:20200306163639p:plain
③ フィルターに利用するための計算フィールドを作成
f:id:zkn360:20200306163709p:plain
④ それぞれのシートで ③ の計算フィールドをフィルターへ、パラメーター コントロールで表示したいシートが表示されているときにフィルターをチェックする
f:id:zkn360:20200306163830p:plain
ダッシュボードを作成
片側のシートは浮動でもう一方のシートに重ねる。シートのタイトルは非表示にしておく。

Online Help ダッシュボード用のシート セレクタを作成する - Tableau

14.背景イメージの変更

あまり知られていないのですが、背景イメージをパラメーターで制御することができます。
f:id:zkn360:20200306164136p:plain
マップ メニューの背景イメージの編集で「次の場合にのみ表示」を利用します。
f:id:zkn360:20200306164053p:plain
※ こちらはワークブック内にサンプルありませんので、ご興味のある方は自力でどうぞ。

Online Help ビューで背景イメージを使用する - Tableau



いかがだったでしょうか。結構パラメーターって使い道ありますよね。これにパラメーター アクションまで加わったら可能性は無限大です。ぜひぜひ活用してください。


ちなみに今回の記事のネタ元は Tableau Conference 19 の下記セッションです。もしご興味があればご参考ください。(ワークブックも計算式も手順もありませんが、何をしたいのかはわかりやすいです。)
Parameters: Oh, the Places You'll Go | Tableau Conference 2019

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 さん