散布図にマージナルヒストグラムを追加

中級

6.5.5

散布図にマージナルヒストグラムを追加

最終更新 2020-03-25 読了時間 1 分
まとめ
  • 散布図の上部・右側にマージナルヒストグラムを配置したカスタムレイアウト。
  • sns.JointGrid で中央と周辺のプロット種類を自由に組み合わせる。
  • jointplot より細かくレイアウトや描画を制御したいときに使う。

seaborn.JointGrid を使うと、散布図と上部・右側のヒストグラムを自由に組み合わせられます。

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

iris = sns.load_dataset("iris")
g = sns.JointGrid(
    data=iris,
    x="petal_length",
    y="petal_width",
    height=4.5,
)
g.plot_joint(sns.scatterplot, hue=iris["species"], palette="Set2", alpha=0.7, s=50)
g.plot_marginals(sns.histplot, element="step", color="#9ca3af", alpha=0.6)

g.fig.suptitle("花弁長と花弁幅の分布", y=1.02)
g.fig.tight_layout()

plt.show()

seaborn.JointGrid を使うと、散布図と上部・右側のヒストグラムを自由に組み合わせられますの図

読み方のポイント #

  • 中央の散布図で相関を、周辺のヒストグラムで単独分布を同時に確認できる。
  • plot_jointplot_marginals を別々に呼び出すことで、プロット種類の組み合わせを細かく選べる。
  • 色分けした場合は JointGrid 内で凡例を追加する必要があるので ax_joint.legend() を活用しよう。

いつ使うか #

  • 適している場面: 散布図の周辺にヒストグラムを配置し、各軸の分布形状も同時に把握したいとき。
  • 不向きな場面: ビン幅の選択が不適切だと周辺分布の印象が変わるため、ヒストグラム部分の調整に注意が必要です。
  • 代替手段: 周辺分布を KDE にすればビン幅依存がなく、より滑らかな形状を確認できます。

よくある失敗パターン #

  • 周辺ヒストグラムのビン幅が不統一: X 軸と Y 軸でビン幅の設計が異なると各軸の分布比較に一貫性がなくなります。同じ基準でビン幅を設定しましょう。
  • 中央の散布図と周辺ヒストグラムのスケール不一致: 散布図の軸範囲と周辺ヒストグラムの範囲がずれると対応関係が分かりにくくなります。軸を共有させてください。