seaborn.violinplot#

seaborn.violinplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, fill=True, inner='box', split=False, width=0.8, dodge='auto', gap=0, linewidth=None, linecolor='auto', cut=2, gridsize=100, bw_method='scott', bw_adjust=1, density_norm='area', common_norm=False, hue_norm=None, formatter=None, log_scale=None, native_scale=False, legend='auto', scale=<deprecated>, scale_hue=<deprecated>, bw=<deprecated>, inner_kws=None, ax=None, **kwargs)#

KDEを表すパッチを描画し、観測値または箱ひげ図の統計量を追加します。

バイオリンプロットは、箱ひげ図と同様の役割を果たします。1つ以上の変数でグループ化した後、データ点の分布を示します。箱ひげ図とは異なり、各バイオリンは基礎となる分布のカーネル密度推定を使用して描画されます。

チュートリアルで詳細を確認してください。

注記

デフォルトでは、この関数は変数の1つをカテゴリ変数として扱い、関連する軸上の順序位置(0、1、…n)にデータを描画します。バージョン0.13.0以降、native_scale=Trueを設定することで、これを無効にできます。

パラメータ:
dataDataFrame、Series、辞書、配列、または配列のリスト

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

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

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

order、hue_order文字列のリスト

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

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

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

バージョンv0.13.0での変更: ‘x’/’y’がオプションとして追加され、’v’/’h’と同等になりました。

colormatplotlibの色

プロット内の要素の単一の色。

paletteパレット名、リスト、または辞書

hue変数の異なるレベルに使用される色。color_palette()で解釈できるもの、またはhueレベルをmatplotlibの色にマッピングする辞書である必要があります。

saturation浮動小数点数

塗りつぶしの色を描画する元の彩度の割合。大きなパッチは、彩度を落とした色の方がよく見えることがありますが、色が入力値と完全に一致するようにするには、これを1に設定します。

fillブール値

Trueの場合、ソリッドパッチを使用します。それ以外の場合は、線画として描画します。

バージョンv0.13.0の新機能。

inner{“box”, “quart”, “point”, “stick”, None}

バイオリンの内側のデータの表現。以下のいずれか

  • "box":ミニチュアの箱ひげ図を描画する

  • "quart":データの四分位数を表示する

  • "point"または"stick":各観測値を表示する

splitブール値

hueを使用する場合、非ミラーリングされた分布を交互の側に表示します。

バージョンv0.13.0での変更: 以前は、このオプションには正確に2つのレベルを持つhue変数が必要でした。

width浮動小数点数

方向軸上の各要素に割り当てられた幅。native_scale=Trueの場合、ネイティブスケールでの2つの値間の最小距離に関連します。

dodge“auto”またはブール値

色相マッピングを使用する場合、重複を排除するために要素をオリエント軸に沿って狭めてシフトするかどうかを指定します。"auto"の場合、orient変数がカテゴリ変数と交差する場合はTrueに、そうでない場合はFalseに設定されます。

バージョン 0.13.0 で変更: "auto"モードが新しいデフォルトとして追加されました。

gapfloat

ずらした要素間に隙間を追加するために、オリエント軸でこの係数だけ縮小します。

バージョン 0.13.0 で追加。

linewidthfloat

プロット要素を囲む線の幅。

linecolorcolor

fillがTrueの場合、線要素に使用する色。

バージョンv0.13.0の新機能。

cutfloat

密度を極値データポイントを超えて拡張する距離(帯域幅単位)。バイオリンをデータ範囲内に制限するには0に設定します。

gridsizeint

KDEを評価するために使用される離散グリッド内の点数。

bw_method{“scott”, “silverman”, float}

カーネル帯域幅を計算する際に使用する参照ルール名、またはスケール係数のいずれか。実際のカーネルサイズは、スケール係数を各グループ内のデータの標準偏差に乗じることで決定されます。

バージョンv0.13.0の新機能。

bw_adjust: float

帯域幅をスケールして、より多くの平滑化または少ない平滑化を行う係数。

バージョンv0.13.0の新機能。

density_norm{“area”, “count”, “width”}

バイオリンの幅を決定するために各密度を正規化する手法。areaの場合、各バイオリンは同じ面積になります。countの場合、幅は観測値の数に比例します。widthの場合、各バイオリンは同じ幅になります。

バージョンv0.13.0の新機能。

common_normbool

Trueの場合、すべてのバイオリンで密度を正規化します。

バージョンv0.13.0の新機能。

hue_normtuple または matplotlib.colors.Normalize オブジェクト

数値型であるhue変数に適用されるカラーマップのデータ単位での正規化。hueがカテゴリ型の場合は関係ありません。

バージョン v0.12.0 で追加。

formattercallable

カテゴリデータを表す文字列に変換する関数。グループ化と目盛りのラベルの両方に影響します。

バージョンv0.13.0の新機能。

log_scalebool または数値、または bool または数値のペア

軸のスケールを対数スケールに設定します。単一の値は、プロット内の数値軸のデータ軸を設定します。値のペアは、各軸を個別に設定します。数値は、目的の底(デフォルトは10)として解釈されます。NoneまたはFalseの場合、seabornは既存のAxesスケールに従います。

バージョンv0.13.0の新機能。

native_scalebool

Trueの場合、カテゴリ軸の数値または日時値は、固定インデックスに変換されるのではなく、元のスケールが維持されます。

バージョンv0.13.0の新機能。

legend“auto”, “brief”, “full”, または False

凡例を描画する方法。「brief」の場合、数値hue変数とsize変数は、均等に間隔を空けた値のサンプルで表されます。「full」の場合、すべてのグループが凡例のエントリを取得します。「auto」の場合、レベルの数に基づいて簡潔な表現と完全な表現のどちらかを選択します。Falseの場合、凡例データは追加されず、凡例は描画されません。

バージョンv0.13.0の新機能。

scale{“area”, “count”, “width”}

バージョン v0.13.0 から非推奨: density_normを参照してください。

scale_huebool

バージョン 0.13.0 から非推奨: common_normを参照してください。

bw{‘scott’, ‘silverman’, float}

バージョン 0.13.0 から非推奨: bw_methodbw_adjustを参照してください。

inner_kwsキーと値のマッピングの辞書

「inner」プロットのキーワード引数。以下のいずれかに渡されます。

さらに、inner="box"の場合、キーワードbox_widthwhis_widthmarkerは、「box」プロットのコンポーネントに対して特別な処理を受けます。

バージョンv0.13.0の新機能。

axmatplotlib Axes

プロットを描画するAxesオブジェクト。そうでない場合は、現在のAxesを使用します。

kwargsキーと値のマッピング

バイオリンパッチのキーワード引数。 matplotlib.axes.Axes.fill_between()に渡されます。

戻り値:
axmatplotlib Axes

プロットが描画されたAxesオブジェクトを返します。

参照

boxplot

同様のAPIを持つ従来の箱ひげ図。

stripplot

1つの変数がカテゴリ変数である散布図。他のプロットと組み合わせて、各観測値を表示できます。

swarmplot

点が重ならないカテゴリ散布図。他のプロットと組み合わせて、各観測値を表示できます。

catplot

カテゴリプロットとFacetGridを組み合わせます。

デフォルトのviolinplotは、対称カーネル密度推定(KDE)を示すパッチと、箱ひげ図の四分位数/ひげの2つの方法で分布を表します。

df = sns.load_dataset("titanic")
sns.violinplot(x=df["age"])
../_images/violinplot_1_0.png

2変量プロットでは、変数の1つが「グループ化」され、複数のバイオリンが描画されます。

sns.violinplot(data=df, x="age", y="class")
../_images/violinplot_3_0.png

デフォルトでは、プロットの方向は変数の型によって決定され、カテゴリ変数によるグループ化が優先されます。

sns.violinplot(data=df, x="class", y="age", hue="alive")
../_images/violinplot_5_0.png

fill=Falseを渡すと、線画のバイオリンが描画されます。

sns.violinplot(data=df, x="class", y="age", hue="alive", fill=False)
../_images/violinplot_7_0.png

スペースを少なくするために「分割」されたバイオリンを描画し、データの四分位数のみを表示します。

sns.violinplot(data=df, x="class", y="age", hue="alive", split=True, inner="quart")
../_images/violinplot_9_0.png

ずらしたバイオリン間に小さな隙間を追加します。

sns.violinplot(data=df, x="class", y="age", hue="alive", split=True, gap=.1, inner="quart")
../_images/violinplot_11_0.png

バージョン0.13.0以降、単一のバイオリンを「分割」することが可能です。

sns.violinplot(data=df, x="class", y="age", split=True, inner="quart")
../_images/violinplot_13_0.png

inner="stick"またはinner="point"を設定することで、分布内の各観測値を表すことができます。

sns.violinplot(data=df, x="age", y="deck", inner="point")
../_images/violinplot_15_0.png

各バイオリンの幅を観測値の数で表すように正規化します。

sns.violinplot(data=df, x="age", y="deck", inner="point", density_norm="count")
../_images/violinplot_17_0.png

デフォルトでは、KDEは観測データの極値を超えて平滑化されます。cut=0を設定してこれを防ぎます。

sns.violinplot(data=df, x="age", y="alive", cut=0, inner="stick")
../_images/violinplot_19_0.png

bw_adjustパラメータは、平滑化の量を制御します。

sns.violinplot(data=df, x="age", y="alive", bw_adjust=.5, inner="stick")
../_images/violinplot_21_0.png

デフォルトでは、グループ化変数が数値型であっても、バイオリンはカテゴリスケール上の固定位置に描画されます。バージョン0.13.0以降、native_scale=Trueパラメータを渡して、両方の軸の元のスケールを維持します。

sns.violinplot(x=df["age"].round(-1) + 5, y=df["fare"], native_scale=True)
../_images/violinplot_23_0.png

カテゴリスケールを使用する場合、formatterパラメータはカテゴリを定義する関数を受け入れます。

decades = lambda x: f"{int(x)}{int(x + 10)}"
sns.violinplot(x=df["age"].round(-1), y=df["fare"], formatter=decades)
../_images/violinplot_25_0.png

デフォルトでは、「inner」表現はlinewidthパラメータとlinecolorパラメータでスケールされます。

sns.violinplot(data=df, x="age", linewidth=1, linecolor="k")
../_images/violinplot_27_0.png

inner_kwsを使用して、パラメータをinnerプロット関数に直接渡します。

sns.violinplot(data=df, x="age", inner_kws=dict(box_width=15, whis_width=2, color=".8"))
../_images/violinplot_29_0.png