seaborn.swarmplot#
- seaborn.swarmplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor=None, linewidth=0, hue_norm=None, log_scale=None, native_scale=False, formatter=None, legend='auto', warn_thresh=0.05, ax=None, **kwargs)#
重なり合わないように調整された点でカテゴリカル散布図を描画します。
この関数は
stripplot()
と似ていますが、点が(カテゴリカル軸に沿ってのみ)調整され、重なり合いません。これにより、値の分布をより適切に表現できますが、多数の観測値に対してはスケールしません。このスタイルのプロットは、時々「ビースウォーム」と呼ばれます。群れプロットは単独で描画できますが、基礎となる分布の表現とともにすべての観測値を示したい場合、箱ひげ図やバイオリンプロットの良い補足となります。
チュートリアルで詳細を確認してください。
注記
デフォルトでは、この関数は変数の1つをカテゴリカルとして扱い、関連する軸上の順序位置(0、1、… n)にデータを描画します。バージョン0.13.0以降、
native_scale=True
を設定することで、これを無効にできます。- パラメータ:
- dataDataFrame、Series、辞書、配列、または配列のリスト
プロットするためのデータセット。
x
とy
がない場合、これはワイド形式として解釈されます。それ以外の場合は、ロング形式であることが想定されます。- x、y、hue
data
内の変数の名前またはベクトルデータ ロング形式のデータのプロットのための入力。解釈については例を参照してください。
- order、hue_order文字列のリスト
カテゴリカルレベルをプロットする順序。そうでない場合、レベルはデータオブジェクトから推測されます。
- dodgebool
hue
変数が割り当てられている場合、これをTrue
に設定すると、カテゴリカル軸に沿って異なるhueレベルの群れが分離され、各ストリップに割り当てられるスペースの量が狭まります。それ以外の場合は、各レベルの点が同じ群れにプロットされます。- orient“v” | “h” | “x” | “y”
プロットの方向(垂直または水平)。これは通常、入力変数の型に基づいて推測されますが、
x
とy
の両方が数値である場合、またはワイド形式のデータのプロット時にあいまいさを解消するために使用できます。バージョンv0.13.0で変更されました: ’x’/’y’をオプションとして追加しました。’v’/’h’と同等です。
- colormatplotlibの色
プロット内の要素の単一の色。
- paletteパレット名、リスト、または辞書
hue
変数の異なるレベルに使用する色。color_palette()
で解釈できるもの、またはhueレベルをmatplotlibの色にマッピングする辞書にする必要があります。- sizefloat
マーカーの半径(ポイント単位)。
- edgecolormatplotlibの色、「gray」は特別な場合として扱われます
各点の周囲の線の色。
"gray"
を渡すと、明るさは、点の本体に使用されるカラーパレットによって決定されます。- linewidthfloat
プロット要素を囲む線の幅。
- log_scaleboolまたは数値、またはboolまたは数値のペア
軸のスケールをlogに設定します。単一の値は、プロット内の任意の数値軸のデータ軸を設定します。値のペアは、各軸を個別に設定します。数値は、目的の底(デフォルトは10)として解釈されます。
None
またはFalse
の場合、seabornは既存のAxesスケールに従います。バージョンv0.13.0の新機能。
- native_scalebool
Trueの場合、カテゴリカル軸の数値または日時値は、固定インデックスに変換されるのではなく、元のスケーリングを維持します。
バージョンv0.13.0の新機能。
- formatter呼び出し可能
カテゴリカルデータを文字列に変換するための関数。グループ化と目盛りのラベルの両方に影響します。
バージョンv0.13.0の新機能。
- legend“auto”、“brief”、“full”、またはFalse
凡例の描画方法。「brief」の場合、数値型の
hue
変数とsize
変数は、均等に間隔を空けた値のサンプルで表されます。「full」の場合、すべてのグループが凡例にエントリとして表示されます。「auto」の場合、レベルの数に基づいて「brief」または「full」の表現が選択されます。False
の場合、凡例データは追加されず、凡例は描画されません。バージョンv0.13.0の新機能。
- axmatplotlib Axes
プロットを描画するAxesオブジェクト。指定しない場合は、現在のAxesを使用します。
- kwargsキーと値の対応付け
その他のキーワード引数は、
matplotlib.axes.Axes.scatter()
に渡されます。
- 戻り値:
- axmatplotlib Axes
プロットが描画されたAxesオブジェクトを返します。
参照
boxplot
同様のAPIを持つ従来の箱ひげ図。
violinplot
箱ひげ図とカーネル密度推定の組み合わせ。
stripplot
一方の変数がカテゴリカルな散布図。他のプロットと組み合わせて、各観測値を表示できます。
catplot
カテゴリカルプロットと
FacetGrid
を組み合わせます。
例
単一の数値変数を割り当てると、重ならないように調整された点で、その一変量分布が表示されます。
tips = sns.load_dataset("tips") sns.swarmplot(data=tips, x="total_bill")
第2の変数を割り当てると、その変数のカテゴリレベルを比較するために、点のグループが分割されます。
sns.swarmplot(data=tips, x="total_bill", y="day")
カテゴリ変数と数値変数の割り当てを入れ替えることで、垂直方向のスウォームを表示します。
sns.swarmplot(data=tips, x="day", y="total_bill")
バージョン0.12より前は、カテゴリ変数のレベルはデフォルトで異なる色になっていました。同じ効果を得るには、
hue
変数を明示的に割り当てます。sns.swarmplot(data=tips, x="total_bill", y="day", hue="day", legend=False)
または、
hue
に別の変数を割り当てて、多次元関係を表示することもできます。sns.swarmplot(data=tips, x="total_bill", y="day", hue="sex")
hue
変数が数値型の場合、デフォルトでは定量的パレットでマッピングされます(バージョン0.12以前はそうではありませんでした)。sns.swarmplot(data=tips, x="total_bill", y="day", hue="size")
palette
を使用して色のマッピングを制御し、質的パレットの名前を渡すことでカテゴリカルマッピングを強制します。sns.swarmplot(data=tips, x="total_bill", y="day", hue="size", palette="deep")
デフォルトでは、
hue
変数の異なるレベルは各スウォームで混在していますが、dodge=True
を設定すると、それらが分割されます。sns.swarmplot(data=tips, x="total_bill", y="day", hue="sex", dodge=True)
プロットの「方向」(定量的関係が維持される方向として定義)は通常自動的に推測されます。しかし、両方の軸変数が数値型など、曖昧な場合は、指定できます。
sns.swarmplot(data=tips, x="total_bill", y="size", orient="h")
/Users/mwaskom/code/seaborn/seaborn/categorical.py:3399: UserWarning: 15.4% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot. warnings.warn(msg, UserWarning) /Users/mwaskom/code/seaborn/seaborn/categorical.py:3399: UserWarning: 17.3% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot. warnings.warn(msg, UserWarning)
点の局所密度が高すぎる場合、「ガター」の各スウォームで重なり合うようになり、警告が表示されます。この問題を回避するには、点のサイズを小さくします。
sns.swarmplot(data=tips, x="total_bill", y="size", orient="h", size=3)
デフォルトでは、カテゴリ変数は数値型であっても、固定スケール(0、1、…)で離散インデックスにマッピングされます。
sns.swarmplot( data=tips.query("size in [2, 3, 5]"), x="total_bill", y="size", orient="h", )
この動作を無効にして変数の元のスケールを使用するには、
native_scale=True
を設定します(これにより、y軸の変数の順序も変更されることに注意してください)。sns.swarmplot( data=tips.query("size in [2, 3, 5]"), x="total_bill", y="size", orient="h", native_scale=True, )
matplotlib.axes.Axes.scatter()
のキーワード引数を渡すことで、さらに視覚的なカスタマイズを行うことができます。sns.swarmplot( data=tips, x="total_bill", y="day", marker="x", linewidth=1, )
複数のファセットを持つプロットを作成するには、
catplot()
をkind="swarm"
と共に使用することが、FacetGrid
を直接操作するよりも安全です。catplot()
は、各ファセットでカテゴリ変数とhue変数が適切に同期されるようにするためです。sns.catplot( data=tips, kind="swarm", x="time", y="total_bill", hue="sex", col="day", aspect=.5 )