データに最適なグラフの選び方
このトピックを修了すると
データが「何を伝えたいのか」に応じて、どのグラフが適切かを判断できるようになります。
まずは質問しましょう
グラフを選ぶ前に、**「このデータで何を見せたいのか」**をまず決めます。同じデータでも、目的によって異なるグラフが適しています。
| 見せたいこと | グラフの種類 |
|---|---|
| サイズ比較 | 棒グラフ |
| 時間経過に伴う変化 | 折れ線グラフ |
| 分布(どれだけばらついているか) | ヒストグラム、箱ひげ図 |
| 2つの変数の関係 | 散布図 |
| 全体に対する割合 | 円グラフ、積み上げ棒グラフ |
1. 比較 — 棒グラフ
「部門別の売上」、「国別の人口」など、カテゴリ間のサイズを比較するのに最も効果的です。
python
sns.barplot(data=df, x='department', y='revenue')ルール:
- 項目が多い場合は、横棒グラフ(horizontal bar)の方が読みやすい
- 必ず0から開始 — 100から開始すると差が誇張される
- 項目の順番は、値に基づいてソートするのが基本(アルファベット順ではない)
2. 傾向 — 折れ線グラフ
「月別の売上」、「日別の訪問者数」など、時間の経過に伴う変化を示します。
python
sns.lineplot(data=df, x='month', y='revenue')ルール:
- X軸は時間 — カテゴリがX軸にあると、折れ線グラフではなく棒グラフになる
- 複数の線を重ねる場合は3本まで — それ以上はスパゲッティになる
- 累積面積グラフ(area chart)は、全体に対する変化を同時に示す場合に使う
3. 分布 — ヒストグラム、箱ひげ図
「年収がどのように分布しているか」、「外れ値があるか」を把握します。
python
# ヒストグラム — 頻度分布sns.histplot(data=df, x='salary', bins=20)
# 箱ひげ図 — 中央値、四分位、外れ値sns.boxplot(data=df, x='department', y='salary')| ヒストグラム | 箱ひげ図 | |
|---|---|---|
| 示すもの | 全体の分布の形 | 要約統計(中央値/四分位/外れ値) |
| 強み | 頂点がいくつあるか、偏っているか | グループ間の比較、外れ値の発見 |
| 弱み | グループの比較が難しい | 詳細な分布の形が見えない |
4. 関係 — 散布図
「経験年数が長いほど、年収が高いか?」など、2つの数値変数の関係を調べます。
python
sns.scatterplot(data=df, x='experience', y='salary', hue='department')点が直線状に並んでいる場合は相関がある、四方に散らばっている場合は相関がない。前のトピック(ヒートマップと散布図)で詳しく解説しました。
5. 構成 — 円グラフ(注意)
「全体の中で、各部分が占める割合」を示します。
python
plt.pie(sizes, labels=labels, autopct='%1.1f%%')円グラフを避けるべき理由:
- 似たようなサイズのセグメントを目で区別するのが難しい — 28%と32%の差を扇形の角度で感じにくい
- 項目が5つを超えると、ほとんど読めなくなる
代替案: 横積み上げ棒グラフの方が割合の比較に効果的です。長さの比較は、角度の比較よりも人間の認知能力に適しています。
選択フローチャート
text
データで何を見せたいか?
│
├─ サイズ比較 ────────→ 棒グラフ
│
├─ 時間経過 ────────→ 折れ線グラフ
│
├─ 分布/外れ値 ──────→ ヒストグラム or 箱ひげ図
│
├─ 2つの変数の関係 ─────→ 散布図
│
├─ 複数の変数の相関 ───→ ヒートマップ
│
└─ 全体に対する割合 ───→ 積み上げ棒グラフ(円グラフは避ける)悪い可視化の共通点
- 3Dグラフ — 遠近感がサイズを歪める
- 二重Y軸 — スケールが異なる2つの軸は、誤った相関関係を作り出す
- Y軸を0から開始しない — 小さな差が大きく見える
- 色の使いすぎ — レインボーカラーは派手だが、情報を邪魔する
- ラベルがない — 軸の名前、単位、タイトルがないと読めない
良い可視化は、「このデータが何を伝えているのか」を5秒以内に理解できるようにします。
結論
グラフを先に選ばない — **「何を見せたいのか」**をまず決めましょう。 比較は棒グラフ、傾向は折れ線グラフ、分布はヒストグラム/箱ひげ図、関係は散布図、全体割合は積み上げ棒グラフ。 **円グラフは避け、**3Dと二重Y軸も避けましょう — シンプルで正直なグラフが良いグラフです。