密度プロット

入門

6.2.2

密度プロット

最終更新 2020-02-12 読了時間 1 分
まとめ
  • 分布の形状を滑らかな曲線で可視化する。
  • sns.kdeplot で複数系列を重ねて比較できる。
  • ヒストグラムより連続的な傾向を見たいときに使う。

数値データがどのように分布しているかを滑らかな曲線で可視化します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import matplotlib.pyplot as plt
import seaborn as sns

fig, ax = plt.subplots(figsize=(6, 4))
df = sns.load_dataset("iris")

for column, color in zip(["sepal_length", "sepal_width", "petal_length", "petal_width"], ["#2563eb", "#0ea5e9", "#22c55e", "#f97316"]):
    sns.kdeplot(data=df, x=column, ax=ax, color=color, label=column)

ax.set_xlabel("測定値")
ax.set_ylabel("密度")
ax.set_title("Iris データの密度プロット")
ax.legend()
ax.grid(alpha=0.2)

fig.tight_layout()

plt.show()

密度プロットの図

読み方のポイント #

  • 曲線が高い部分はデータが集中している。裾の形状で分布の幅が分かる。
  • 複数系列を重ねる場合は色と凡例で識別し、透明度を下げて重なりを見やすくすると効果的。
  • 平滑化帯域 bw_adjust を調整すると曲線の滑らかさをコントロールできる。

いつ使うか #

  • 適している場面: 分布の滑らかな形状を確認したいとき。ヒストグラムのビン幅依存を避けて連続的に表示できます。
  • 不向きな場面: データ数が少ない場合はカーネル幅の選択で見え方が大きく変わり、実態と乖離する恐れがあります。
  • 代替手段: ECDFを使えばカーネル幅のパラメータ選択なしで分布全体を正確に描けます。

よくある失敗パターン #

  • 帯域幅の不適切な設定: 帯域幅が小さすぎるとギザギザに、大きすぎると特徴が潰れます。デフォルト値をベースに視覚的にも確認してください。
  • 範囲外への外挿: KDE はデータ範囲外にも密度を広げるため、物理的にありえない負の値に密度が出ることがあります。xlim で制限しましょう。