Python Pandas – Seabornでバイオリンプロットの上に観測値のスウォームを描画する方法
Seabornのスウォームプロットとは
Seabornのスウォームプロット(Swarm Plot)は、各データポイントが互いに重ならないように調整されたカテゴリ別散布図を描画するための機能です。描画には seaborn.swarmplot() を使用します。さらに、violinplot() で作成したバイオリンプロットの上にスウォームを重ねて表示することで、分布の形状と個々の観測値を同時に確認できる、より情報量の多いグラフを作成できます。
この記事では、次のCSVファイル「Cricketers2.csv」をデータセットとして使用し、その手順を解説します。
1. 必要なライブラリをインポートする
まず、Seaborn・Pandas・Matplotlibを読み込みます。
import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
2. CSVファイルからPandas DataFrameへデータを読み込む
pd.read_csv() を使って、CSVファイルの内容をDataFrameとして読み込みます。
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers2.csv")3. バイオリンプロットの上にスウォームを描画する
sb.violinplot() でバイオリンプロットを描き、その上に sb.swarmplot() で観測値を重ねます。ここでは点を目立たせるために色を白(color="white")に指定しています。
sb.violinplot(x = dataFrame["Role"], y = dataFrame["Matches"])
sb.swarmplot(x = dataFrame["Role"], y = dataFrame["Matches"], color="white")
x軸には選手の役割(Role)、y軸には試合数(Matches)を指定することで、役割ごとの試合数の分布と実際のデータポイントを一目で比較できます。
完全なコード例
import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
# CSVファイルからPandas DataFrameへデータを読み込む
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers2.csv")
sb.set_theme(style="whitegrid")
# バイオリンプロットの上に観測値のスウォームを描画する
sb.violinplot(x = dataFrame["Role"], y = dataFrame["Matches"])
sb.swarmplot(x = dataFrame["Role"], y = dataFrame["Matches"], color="white")
# グラフを表示
plt.show()
出力結果
このコードを実行すると、バイオリンプロットの上に白い点で観測値が重ねて表示されたグラフが出力されます。バイオリンの形状から分布の広がりや密度がわかり、スウォームの点から個々のデータの位置が確認できるため、カテゴリ間の比較が非常に直感的に行えます。

-
Seabornのswarmplotでorderパラメータを使って表示順序を制御する方法
Seabornのスウォームプロット(Swarm Plot)は、点が重ならないように自動調整されたカテゴリ別散布図を描画するためのグラフです。この描画には seaborn.swarmplot() 関数を使用します。order パラメータに明示的な順序(カテゴリ名のリスト)を渡すことで、特定の列を基準とした表示順序を自由に制御できます。 データセットの準備 ここでは、CSVファイル「Cricketers2.csv」の形式で保存されたデータセットを使用します。 必要なライブラリのインポート import seaborn as sb import pandas as pd import matplot
-
【Python】Seabornのバイオリンプロットでorderパラメータにより表示順序を制御する方法
Seabornのバイオリンプロット(Violin Plot)は、箱ひげ図とカーネル密度推定を組み合わせた可視化手法です。この描画には seaborn.violinplot() 関数を使用します。カテゴリの表示順序を制御したい場合は、order パラメータに明示的な順序を渡すことで実現できます。 ここでは、次のようなCSVファイル「Cricketers.csv」をデータセットとして使用します。 まず、必要なライブラリをインポートしましょう。 import seaborn as sb import pandas as pd import matplotlib.pyplot as plt 続いて、C