SeabornとPandasでスウォームプロットを作成する方法|Pythonデータ可視化入門
スウォームプロットとは?
Seabornのスウォームプロット(Swarm Plot)は、カテゴリごとのデータポイントを互いに重ならないように配置して描画する散布図の一種です。データの分布や密度を直感的に把握できるため、カテゴリカルデータの可視化に非常に便利です。本記事では、seaborn.swarmplot() を使ったスウォームプロットの作成手順を、サンプルコード付きで解説します。
今回使用するデータセットは、CSVファイル形式の「Cricketers.csv」(クリケット選手のデータ)です。
ステップ1:必要なライブラリをインポートする
まず、以下の3つのライブラリをインポートします。
import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
ステップ2:CSVファイルからデータを読み込む
pd.read_csv() を使って、CSVファイルのデータをPandasのDataFrameに読み込みます。
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers.csv")
ステップ3:スウォームプロットを作成する
X軸に「Age(年齢)」、Y軸に「Height(身長・インチ)」を指定して、スウォームプロットを描画します。
sb.swarmplot(x = dataFrame["Age"], y = dataFrame["Height"], data=dataFrame)
サンプルコード全体
ここまでの手順をまとめた完全なコードは以下の通りです。
import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
# CSVファイルからデータをPandas DataFrameに読み込む
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers.csv")
# テーマを設定
sb.set_theme(style="whitegrid")
# 年齢と身長(インチ)でスウォームプロットを作成
sb.swarmplot(x = dataFrame["Age"], y = dataFrame["Height"], data=dataFrame)
# Y軸ラベルを設定
plt.ylabel("Height (inches)")
# グラフを表示
plt.show()
実行結果
上記のコードを実行すると、年齢ごとの身長の分布が重ならない点として描画されたスウォームプロットが出力されます。

まとめ
Seabornの swarmplot() を使えば、わずか数行のコードでカテゴリ別の散布図を美しく可視化できます。データポイントが重ならないよう自動的に調整されるため、分布の形状だけでなく密度まで一目で確認できるのが大きな魅力です。ボックスプロットやバイオリンプロットと組み合わせれば、さらに深い分析も可能になります。ぜひご自身のデータでも試してみてください。
-
Python Pandas入門:Seabornで箱ひげ図の上にスウォームプロット(観測値の群れ)を重ねて描画する方法
データ分析において、分布の全体像を把握しながら個々のデータポイントも確認したい場面は多くあります。Seabornのスウォームプロット(Swarm Plot)は、点同士が重ならないように配置されたカテゴリ別散布図を描画する機能で、seaborn.swarmplot()を使用して実現できます。 本記事では、seaborn.boxplot()で描いた箱ひげ図の上に、このスウォームプロットを重ねて表示する方法を解説します。箱ひげ図だけでは見えない外れ値やデータの偏りを、視覚的に把握できるようになります。 前提条件と準備 まず、必要なライブラリをインポートします。Seaborn、Pandas、NumPy
-
Seabornのswarmplotでorderパラメータを使って表示順序を制御する方法
Seabornのスウォームプロット(Swarm Plot)は、点が重ならないように自動調整されたカテゴリ別散布図を描画するためのグラフです。この描画には seaborn.swarmplot() 関数を使用します。order パラメータに明示的な順序(カテゴリ名のリスト)を渡すことで、特定の列を基準とした表示順序を自由に制御できます。 データセットの準備 ここでは、CSVファイル「Cricketers2.csv」の形式で保存されたデータセットを使用します。 必要なライブラリのインポート import seaborn as sb import pandas as pd import matplot