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、辞書、配列、または配列のリスト

プロットするためのデータセット。xyがない場合、これはワイド形式として解釈されます。それ以外の場合は、ロング形式であることが想定されます。

x、y、huedata内の変数の名前またはベクトルデータ

ロング形式のデータのプロットのための入力。解釈については例を参照してください。

order、hue_order文字列のリスト

カテゴリカルレベルをプロットする順序。そうでない場合、レベルはデータオブジェクトから推測されます。

dodgebool

hue変数が割り当てられている場合、これをTrueに設定すると、カテゴリカル軸に沿って異なるhueレベルの群れが分離され、各ストリップに割り当てられるスペースの量が狭まります。それ以外の場合は、各レベルの点が同じ群れにプロットされます。

orient“v” | “h” | “x” | “y”

プロットの方向(垂直または水平)。これは通常、入力変数の型に基づいて推測されますが、xyの両方が数値である場合、またはワイド形式のデータのプロット時にあいまいさを解消するために使用できます。

バージョン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")
../_images/swarmplot_1_0.png

第2の変数を割り当てると、その変数のカテゴリレベルを比較するために、点のグループが分割されます。

sns.swarmplot(data=tips, x="total_bill", y="day")
../_images/swarmplot_3_0.png

カテゴリ変数と数値変数の割り当てを入れ替えることで、垂直方向のスウォームを表示します。

sns.swarmplot(data=tips, x="day", y="total_bill")
../_images/swarmplot_5_0.png

バージョン0.12より前は、カテゴリ変数のレベルはデフォルトで異なる色になっていました。同じ効果を得るには、hue変数を明示的に割り当てます。

sns.swarmplot(data=tips, x="total_bill", y="day", hue="day", legend=False)
../_images/swarmplot_7_0.png

または、hueに別の変数を割り当てて、多次元関係を表示することもできます。

sns.swarmplot(data=tips, x="total_bill", y="day", hue="sex")
../_images/swarmplot_9_0.png

hue変数が数値型の場合、デフォルトでは定量的パレットでマッピングされます(バージョン0.12以前はそうではありませんでした)。

sns.swarmplot(data=tips, x="total_bill", y="day", hue="size")
../_images/swarmplot_11_0.png

paletteを使用して色のマッピングを制御し、質的パレットの名前を渡すことでカテゴリカルマッピングを強制します。

sns.swarmplot(data=tips, x="total_bill", y="day", hue="size", palette="deep")
../_images/swarmplot_13_0.png

デフォルトでは、hue変数の異なるレベルは各スウォームで混在していますが、dodge=Trueを設定すると、それらが分割されます。

sns.swarmplot(data=tips, x="total_bill", y="day", hue="sex", dodge=True)
../_images/swarmplot_15_0.png

プロットの「方向」(定量的関係が維持される方向として定義)は通常自動的に推測されます。しかし、両方の軸変数が数値型など、曖昧な場合は、指定できます。

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)
../_images/swarmplot_17_1.png

点の局所密度が高すぎる場合、「ガター」の各スウォームで重なり合うようになり、警告が表示されます。この問題を回避するには、点のサイズを小さくします。

sns.swarmplot(data=tips, x="total_bill", y="size", orient="h", size=3)
../_images/swarmplot_19_0.png

デフォルトでは、カテゴリ変数は数値型であっても、固定スケール(0、1、…)で離散インデックスにマッピングされます。

sns.swarmplot(
    data=tips.query("size in [2, 3, 5]"),
    x="total_bill", y="size", orient="h",
)
../_images/swarmplot_21_0.png

この動作を無効にして変数の元のスケールを使用するには、native_scale=Trueを設定します(これにより、y軸の変数の順序も変更されることに注意してください)。

sns.swarmplot(
    data=tips.query("size in [2, 3, 5]"),
    x="total_bill", y="size", orient="h",
    native_scale=True,
)
../_images/swarmplot_23_0.png

matplotlib.axes.Axes.scatter()のキーワード引数を渡すことで、さらに視覚的なカスタマイズを行うことができます。

sns.swarmplot(
    data=tips, x="total_bill", y="day",
    marker="x", linewidth=1,
)
../_images/swarmplot_25_0.png

複数のファセットを持つプロットを作成するには、catplot()kind="swarm"と共に使用することが、FacetGridを直接操作するよりも安全です。catplot()は、各ファセットでカテゴリ変数とhue変数が適切に同期されるようにするためです。

sns.catplot(
    data=tips, kind="swarm",
    x="time", y="total_bill", hue="sex", col="day",
    aspect=.5
)
../_images/swarmplot_27_0.png