Fundamentals of Data Visualization 読書会 要約

# 本記事の位置付け

下記読書会のための要約です。

https://gaisaba.connpass.com/event/303078/

## 課題図書

https://clauswilke.com/dataviz/directory-of-visualizations.html

この記事に出てくる図は、すべて上記ページより引用したものです。

::: note
この書式での注記は、このブログの筆者（IQぼっち）の感想です。
:::

::: note warn
この書式での注記は、このブログの筆者（IQぼっち）の感想のうち、わからなかった部分や、ちょっと気をつけたほうがいいなと思った点です。
:::

## 今回の範囲

5 Directory of visualizations

# 要約

## この章について

- データ分析の世界で、よく使うプロット／チャートの概要を見ていくよ
- こんな使い方ができるよ
    - 形はわかるけど名前を知らないグラフの名前を調べるために
    - いつも作っているグラフを別の方法で作るためのインスピレーションのネタとして

## 5.1 量をあらわすグラフ

### 基本

量（例：あるカテゴリに属する要素の数）を可視化するために最も一般的な方法は、棒グラフを使うことです。
棒の向きは縦でも横でもいいです。
棒のかわりに、ドットを使うこともできます。

![amounts-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/0b45c822-98a2-db78-5829-867d0fc9d6ad.png)

### 二つ以上のカテゴリがあるとき

量をあらわしたいカテゴリが2つ以上ある場合、

- 棒グラフをグループ化したり、積み上げることもできる
- カテゴリをxとyにそれぞれマッピングし、量を色で表現してヒートマップを作ることもできる

![amounts_multi-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/bf02f3de-b698-904a-6fda-f18ed52d3d7f.png)

::: note warn
- 棒グラフは任意の n 個のカテゴリーを扱えるけど、ヒートマップは n=2 じゃないと作れないよな
- ヒートマップを作るときの x軸と y軸は、離散的な変数か、連続的な変数の場合は、ヒストグラムの bin のように幅で区切る必要がある
:::

## 5.2 分布をあらわすグラフ

ヒストグラムと密度プロットは、データの分布を最も直感的に可視化できるが、いずれも恣意的なパラメータを設定する必要があり、この点がミスリードにつながることもある。

:::note warn
「恣意的なパラメータ」というのは、binの値のことを言っているのか？
:::

![single-distributions-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/fd286a1f-1c0c-2dc3-721f-965e4b7394f3.png)


累計密度グラフや q-q プロットは、常に信頼に値する形でデータを表現するが、解釈するのは（ヒストグラムなどより）難しい。

箱ひげ図、バイオリンプロット、ストリップチャート、Sinaプロットは、様々な分布を一度に見たいときや、全体的な推移の分布を見たいときに役立つ（Chapter 9.1で詳述）。

![multiple-distributions-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/113d51b4-f65c-7447-2d52-ff64d0667082.png)

積み上げ形式のヒストグラムや、重なった密度のグラフは、比較対象が少ない場合に、より詳細な分布の比較をするのに役立つが、積み上げ形式のヒストグラムは読み解きが難しいので避けるのがベスト（Chapter 7.2で詳述）。

[リッジラインプロット](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%83%E3%82%B8%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%97%E3%83%AD%E3%83%83%E3%83%88) はバイオリンプロットの代替案として有効であり、しばしば比較対象の分布の数が多いときや、時間軸の変化を追いたい（場合に、扱う時間軸の数が多い）ときに有効である。

## 5.3 割合をあらわすグラフ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/d02dcd33-504b-a606-db8f-eaeec398340c.png)

- 割合は円グラフ、棒グラフ、積み上げ棒グラフ（Stacked Bars）として表現することができる
- 量をあらわす場合、棒グラフは縦にしても横にしてもいい
- 円グラフは個々の要素が全体に占める割合をシンプルに示すことができる
- しかし個々の要素同士を比較する場合は、横に並べた棒グラフの方が簡単
- 積み上げ棒グラフは、棒が一本のときは使う意味があまりない（look awkward）が、複数の要素を比較するときは役に立つ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/6dcd8f63-ce63-55ef-66b9-0cfd92c278a0.png)

複数の組み合わせの割合や、条件別の割合（例：月ごとの製品別の売上など）を見る場合…

- 円グラフはスペース効率が悪く、要素間の関係が見えにくくなりがち
- グループ別の棒グラフ（Grouped Bars）は、要素の数が中程度のときに便利
- 要素の数がもっと多いときは、積み上げ棒グラフが便利

::: note
上記（円グラフ、グループ別の棒グラフ、積み上げ棒グラフ）は基本的に、x軸が離散的な変数の場合（または値を一定の区切りごとにグループ化して離散っぽくできる場合）に有効
:::

- x軸が連続値のときは、積み上げ密度グラフが有効

::: note
ただし y軸は離散的な変数である必要がある…のか？？
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/86a50478-c485-2d0e-2468-80d00e32c8e4.png)

割合が複数のグループ変数によって変化するときは、モザイクプロット、ツリーマップ、[パラレル・セット](https://visualizing.jp/parallel-sets/)が有効である。

モザイクプロットは、ひとつの変数（例：ｘ軸）すべてのレベルが、もうひとつの変数（例：y軸）のすべてのレベルと結び付けられることを前提にしているが、ツリーマップは必ずしもそれを前提にしていない。

:::note warn
これは具体的にどういうことを言っている？？
x軸の可能な値が a,b,c で、y軸の可能な値がA,B,Cだとして、モザイクプロットの場合は(a,b,c)と(A,B,C)のすべての値の組み合わせが存在することを前提にしていると言っている？
-> たとえば x=a かつ y=A のデータが存在しないなら、x=a の棒に y=A の色が描画されないだけなのでは？？
:::

ツリーマップなら、あるグループ（x軸 or y軸）に従属するグループ（subdivision）が、他のグループに従属するグループが完全に独立していても大丈夫。

グループをあらわす変数が3つ以上ある場合は、パラレル・セットが適している。

:::note
パラレル・セットの使いどころが初めてわかった
:::

## 5.4 xとyの関係をあらわすグラフ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/888e4943-036c-ea42-afef-08dd7ff33007.png)

散布図は、ひとつの量的な変数ともう一方の量的な変数の関係をざっくり把握したいときに向いている（12.1で詳述）。

量的な変数が3つある場合は、散布図に加えて3つめの変数をドットの大きさで示し、バブルチャートで表現することができる。

x軸とy軸の単位が揃っている場合は、x=yを示す対角線を引くと役に立つ。

:::note
ひとつの家計ごとの収支のデータで、x軸 = 支出（円）、y軸 = 収入（円）とすると、対角線より下にある点が赤字の家計、上にある点が黒字の家計と一目でわかる的なことか。なるほど。
:::

### x軸とy軸の単位が揃っている場合

x軸とy軸の単位が揃っている場合は、ふたつの点を線でつないだスロープグラフで示すこともできる（12.4で詳述）

:::note
スロープグラフも、赤字と黒字などを示すには便利そうだが、要素の数が多いと厳しそう。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/2fa8353f-3164-3418-1110-45fdb534d058.png)

### 要素の数が極めて多い場合

点の数（データの数）が多くなりすぎると、点同士が重なってしまうため、散布図が役に立たなくなってくる。

この場合、密度の等高線グラフ（Density Contours）、二次元ヒストグラム（2D Bins）, 六角ビン（Hex Bins）が代替候補となる（Chapter18で詳述）。

2つ以上の変数を可視化したいときは、各要素の数や量ではなく（instead of underlying raw data）、要素同士の相関係数をヒートマップ的にあらわした[コレログラム](https://kakeami.github.io/viz-madb/charts4assocs/correlo.html)を使うことがある。

### x軸が時間または厳密な増加量（strictly increasing quantity）の場合

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/762924ee-96ea-0e49-4fe7-215611dc25da.png)

x軸が時間、または厳密な増加量（薬の服用量など）の場合は折れ線グラフを使う（Chapter13で詳述）。

二つの変数の相関を時間軸で追いたい場合は、散布図の時系列で隣り合う点同士を線でつないで、線でつながれた散布図（Connected Scatterplot）を作る。

より大きなデータセットの傾向を表したい場合は、線を曲線化することもある（Chapter14で詳述）。

## 5.5 地理空間に紐づくデータの可視化

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/b9be3f03-36a3-c23a-ba31-85383ffb3390.png)

地理空間に基づくデータの主要な態様（primary mode）は地図である（Chapter15で詳述）。

地図は（本来は球体である）地球上の座標を平面上にとることで、球体である地球上の形と距離がおおむね二次元に還元する。

さらに、地図上の各エリアをデータの値によって色分けすることもでき、こうしたグラフはコロプレスと呼ばれる。

場合によっては、異なる地域を（人口などの）他の量によってあえてゆがめることが効果的なこともあり、そうした可視化の手法はカルトグラムと呼ばれる。

## 5.6 不確実性をあらわすグラフ

:::note warn
このパートが、なかなかイメージが湧かず難しかった。
エラーバー書いたことも読んだこともなかったが、品質管理系のドメインなどで登場するのか・・・？
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/40409fbd-07c4-e892-db97-595f7ceba0e4.png)

[エラーバー](https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%90%E3%83%BC#:~:text=%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%90%E3%83%BC%EF%BC%88%E8%8B%B1%3A%20error%20bar,%E3%81%84%E3%82%8B%E3%81%8B%E3%81%AE%E6%A6%82%E5%BF%B5%E3%82%92%E4%B8%8E%E3%81%88%E3%82%8B%E3%80%82)は、あるカテゴリーがとり得る値の見積もりを示すためのものである。
エラーバーは、縦向きにも横向きにもできる。（Chapter16で詳述）

Reference point (※うまい日本語訳が見つからず。参照点…？！) は点や棒など、様々な方法で示すことができる。

グラデーション形式のエラーバー（Graded error bar）は、各範囲が異なる信頼度（different degree of confident）をとる複数の範囲を一度に示すことができる。

これらは実質的には、線の太さの異なる複数のエラーバーが重なって表示されたもの。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/5569856f-aeb4-358a-85b7-014b4abf33ba.png)

より詳細な情報を可視化するには、実際の信頼度(confidence)や[事後確率](https://ja.wikipedia.org/wiki/%E4%BA%8B%E5%BE%8C%E7%A2%BA%E7%8E%87)の分布(posterior distribution)を可視化することもできる（Chapter16で詳述）。

:::note warn
confidence / posterior distribution の訳は自信なし
:::

信頼度の帯グラフ（Condfidence strip）は不確実性の感じを明確に可視化できるが、正確に読み解くのは難しい。

eyes グラフと半眼グラフ（Half-eyes）は、エラーバーと分布の可視化を組み合わせたアプローチ（eyes: バイオリンプロット、半眼：リッジライン）であり、正確な信頼度レベルの範囲と全体的な不確実性の分布を示すことができる。

量的な点のプロット（Quantile dot plot）は、不確実性の分布のかわりに使うことができる（16.1で詳述）。

分布を離散的な単位で示すことによって、量的な点のプロットは、バイオリンプロットやリッジラインのような連続的な分布と比べて正確ではないが、より容易に読み解くことができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/1676f34c-a3e8-06b3-8eb3-2f01004802f2.png)

曲線のグラフで、エラーバーに対応するものは信頼度の帯グラフ（Confidence band）である（16.3で詳述）。
帯は、所与の信頼度に対して、線が通りうる値の範囲を示す。

エラーバーの場合と同様に、信頼度の帯グラフをグラデーション化することによって、複数の信頼度のレベルを一度に示すこともできる。

帯のかわりに、個別の fitted draw (日本語化あきらめました。。。) を示すこともできる。

# さいごに

要約は以上です。

これを読んで、読書会に参加したくなった方はこちら👇まで！

https://gaisaba.connpass.com/event/303078/