Seabornのスウォームプロットに箱ひげ図を重ねて可視化する方法
データ可視化において、個々のデータポイントを確認しながら分布の統計的な要約も同時に把握したいケースは多くあります。Seabornでは、スウォームプロット(swarmplot)と箱ひげ図(boxplot)を同じ軸上に重ね合わせることで、両方の情報を1つのグラフで表現できます。
この記事では、その具体的な手順とサンプルコードを紹介します。
実装の手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- 2次元の表形式データを持つPandasのDataFrameを作成します。
sns.swarmplot()を使ってスウォームプロットを描画します。このとき、後から重ねる箱ひげ図との重なり順序を制御するため、zorder=0を指定しておくのがポイントです。- 同じ軸(ax)に対して
sns.boxplot()を呼び出し、箱ひげ図を重ねます。 plt.show()で図を表示します。
サンプルコード
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
data = pd.DataFrame({"Box1": np.arange(10), "Box2": np.arange(10)})
ax = sns.swarmplot(x="Box1", y="Box2", data=data, zorder=0)
sns.boxplot(x="Box1", y="Box2", data=data, showcaps=False,
boxprops={'facecolor': 'None'}, showfliers=False,
whiskerprops={'linewidth': 0}, ax=ax)
plt.show()
コードの解説
ここでの重要なポイントは、箱ひげ図側のスタイル設定です。
boxprops={'facecolor': 'None'}:箱の塗りつぶしを透明にすることで、背後のスウォームプロットの点が隠れません。showcaps=Falseとwhiskerprops={'linewidth': 0}:ヒゲやキャップを非表示にし、視覚的なノイズを減らします。showfliers=False:外れ値の点を非表示にします。スウォームプロットですべての点がすでに表示されているため、二重に描画する必要がないからです。zorder=0:スウォームプロットを下層に配置し、箱ひげ図の線が前面に来るようにします。
このように、スウォームプロットで実際のデータ分布を示しつつ、半透明の箱ひげ図で中央値や四分位範囲などの統計量を重ねることで、非常に見やすく情報量の多いグラフを作成できます。
-
Python Seabornの箱ひげ図(ボックスプロット)を使ってカテゴリ別のデータを比較する方法
はじめにSeabornは、Pythonでデータを可視化するための強力なライブラリです。洗練されたカスタムテーマと高水準のインターフェースを備えており、美しいグラフを少ないコード量で作成できます。散布図は便利な可視化手法ですが、特定のカテゴリ内における値の分布しか把握できず、得られる情報には限りがあります。カテゴリ間でデータを比較したい場合には、別の手法が必要になります。そこで活躍するのが箱ひげ図(ボックスプロット)です。箱ひげ図を使うことで、四分位数に基づいてデータセット内の分布を直感的に理解できます。箱ひげ図の構成要素箱ひげ図は、箱から上下に伸びる縦線で構成されます。この線は「ひげ(ウィスカ
-
PythonとSeabornを使って散布図を表示する方法をわかりやすく解説
データ分析において可視化(ビジュアライゼーション)は非常に重要なステップです。数値を一つひとつ確認したり複雑な計算を行ったりしなくても、データに何が起きているのかを直感的に把握できるからです。その可視化を手軽に実現できるライブラリの一つが、Pythonの「Seaborn」です。 散布図(scatter plot)とは、データポイントをグラフ上に点として散りばめて分布を表現するグラフのことです。数値データの値をドットで表し、横軸・縦軸上の各ドットの位置が、それぞれのデータポイントの値を示します。散布図を使うことで、2つの変数間の関係性(相関)を視覚的に理解することができます。 ここでは、Sea