Python Seabornでジッターパラメータを使わずにカテゴリ散布図のポイントの重なりを回避する方法
データ可視化にはSeabornライブラリを使用します。Seabornは、カスタマイズされたテーマと高水準インターフェースを備えたデータ可視化用ライブラリです。この高水準インターフェースにより、データの種類やフィルタ適用時の挙動を柔軟に制御・カスタマイズすることができます。
stripplotの課題点
変数のうち少なくとも1つがカテゴリ型である場合には、「stripplot」関数が使用されます。この関数では、データがいずれかの軸に沿ってソートされた形で表示されます。しかし、一部のポイントが重なってしまい、データの分布が正しく読み取れなくなるという欠点があります。
通常、この問題を解決するには「jitter」パラメータを使用します。jitterはデータセットにランダムなノイズを加え、カテゴリ軸に沿った値の位置を調整することで、ポイント同士の重なりを防ぎます。
swarmplotによる解決策
しかし、jitterパラメータを使わなくても、「swarmplot」関数を使えばカテゴリ散布図を作成できます。swarmplotは各ポイントが互いに重ならないよう自動的に位置を調整するため、データの分布をより正確に視覚化できます。
swarmplot関数の構文
seaborn.swarmplot(x, y, data, ...)
以下に実際の使用例を示します。
サンプルコード
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
my_df = sb.load_dataset('iris')
sb.swarmplot(x = "species", y = "petal_length", data = my_df)
plt.show()
出力結果

コードの解説
- 必要なパッケージ(pandas、seaborn、matplotlib)をインポートします。
- 入力データとして、Seabornに組み込まれている「iris(アヤメ)」データセットを読み込みます。
- 「
load_dataset」関数を使用してirisデータを取得し、データフレームとして保存します。 - 「
swarmplot」関数を使ってデータを可視化します。 - x軸に「species(種)」、y軸に「petal_length(花弁の長さ)」を指定し、data引数にデータフレームを渡します。
- 最後に「
plt.show()」でグラフを画面に表示します。
このように、swarmplotを使用することで、jitterによるランダムノイズに頼らず、ポイントが重ならない美しいカテゴリ散布図を作成できます。特にデータポイント数が少ない〜中程度の場合に有効な手法です。
-
PythonのSeabornでstripplotを使うときにポイントの重なりを防ぐ方法(jitterパラメータの使い方)
データの可視化は、複雑な計算を行ったり数値を一つずつ確認したりしなくても、データの中で何が起きているのかを直感的に把握できるようにしてくれる重要なステップです。その可視化を支援するライブラリのひとつが「Seaborn」です。Seabornはカスタマイズされたテーマと高水準なインターフェースを備えており、美しいグラフを簡単に描画できます。しかし、扱う変数がカテゴリカル(分類型)データである場合、一般的な散布図やヒストグラムなどはそのまま使えません。こうしたケースでは、カテゴリカル散布図(categorical scatterplot)を使用する必要があります。stripplotとはカテゴリカル変
-
PythonとSeabornを使って散布図を表示する方法をわかりやすく解説
データ分析において可視化(ビジュアライゼーション)は非常に重要なステップです。数値を一つひとつ確認したり複雑な計算を行ったりしなくても、データに何が起きているのかを直感的に把握できるからです。その可視化を手軽に実現できるライブラリの一つが、Pythonの「Seaborn」です。 散布図(scatter plot)とは、データポイントをグラフ上に点として散りばめて分布を表現するグラフのことです。数値データの値をドットで表し、横軸・縦軸上の各ドットの位置が、それぞれのデータポイントの値を示します。散布図を使うことで、2つの変数間の関係性(相関)を視覚的に理解することができます。 ここでは、Sea