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、辞書、配列、または配列のリスト
プロットのためのデータセット。
x
とy
がない場合、これはワイド形式と解釈されます。それ以外の場合は、ロング形式であることが期待されます。- x、y、hue
data
内の変数の名前またはベクトルデータ ロング形式データのプロットのための入力。解釈については例を参照してください。
- order、hue_order文字列のリスト
カテゴリレベルをプロットする順序。そうでない場合、レベルはデータオブジェクトから推測されます。
- orient“v” | “h” | “x” | “y”
プロットの向き(縦または横)。これは通常、入力変数の型に基づいて推測されますが、
x
とy
の両方が数値の場合、またはワイド形式のデータのプロット時に曖昧さを解消するために使用できます。バージョン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_method
とbw_adjust
を参照してください。- inner_kwsキーと値のマッピングの辞書
「inner」プロットのキーワード引数。以下のいずれかに渡されます。
matplotlib.collections.LineCollection
(inner="stick"
の場合)matplotlib.axes.Axes.scatter()
(inner="point"
の場合)matplotlib.axes.Axes.plot()
(inner="quart"
またはinner="box"
の場合)
さらに、
inner="box"
の場合、キーワードbox_width
、whis_width
、marker
は、「box」プロットのコンポーネントに対して特別な処理を受けます。バージョンv0.13.0の新機能。
- axmatplotlib Axes
プロットを描画するAxesオブジェクト。そうでない場合は、現在のAxesを使用します。
- kwargsキーと値のマッピング
バイオリンパッチのキーワード引数。
matplotlib.axes.Axes.fill_between()
に渡されます。
- 戻り値:
- axmatplotlib Axes
プロットが描画されたAxesオブジェクトを返します。
参照
例
デフォルトのviolinplotは、対称カーネル密度推定(KDE)を示すパッチと、箱ひげ図の四分位数/ひげの2つの方法で分布を表します。
df = sns.load_dataset("titanic") sns.violinplot(x=df["age"])
2変量プロットでは、変数の1つが「グループ化」され、複数のバイオリンが描画されます。
sns.violinplot(data=df, x="age", y="class")
デフォルトでは、プロットの方向は変数の型によって決定され、カテゴリ変数によるグループ化が優先されます。
sns.violinplot(data=df, x="class", y="age", hue="alive")
fill=False
を渡すと、線画のバイオリンが描画されます。sns.violinplot(data=df, x="class", y="age", hue="alive", fill=False)
スペースを少なくするために「分割」されたバイオリンを描画し、データの四分位数のみを表示します。
sns.violinplot(data=df, x="class", y="age", hue="alive", split=True, inner="quart")
ずらしたバイオリン間に小さな隙間を追加します。
sns.violinplot(data=df, x="class", y="age", hue="alive", split=True, gap=.1, inner="quart")
バージョン0.13.0以降、単一のバイオリンを「分割」することが可能です。
sns.violinplot(data=df, x="class", y="age", split=True, inner="quart")
inner="stick"
またはinner="point"
を設定することで、分布内の各観測値を表すことができます。sns.violinplot(data=df, x="age", y="deck", inner="point")
各バイオリンの幅を観測値の数で表すように正規化します。
sns.violinplot(data=df, x="age", y="deck", inner="point", density_norm="count")
デフォルトでは、KDEは観測データの極値を超えて平滑化されます。
cut=0
を設定してこれを防ぎます。sns.violinplot(data=df, x="age", y="alive", cut=0, inner="stick")
bw_adjust
パラメータは、平滑化の量を制御します。sns.violinplot(data=df, x="age", y="alive", bw_adjust=.5, inner="stick")
デフォルトでは、グループ化変数が数値型であっても、バイオリンはカテゴリスケール上の固定位置に描画されます。バージョン0.13.0以降、
native_scale=True
パラメータを渡して、両方の軸の元のスケールを維持します。sns.violinplot(x=df["age"].round(-1) + 5, y=df["fare"], native_scale=True)
カテゴリスケールを使用する場合、
formatter
パラメータはカテゴリを定義する関数を受け入れます。decades = lambda x: f"{int(x)}–{int(x + 10)}" sns.violinplot(x=df["age"].round(-1), y=df["fare"], formatter=decades)
デフォルトでは、「inner」表現は
linewidth
パラメータとlinecolor
パラメータでスケールされます。sns.violinplot(data=df, x="age", linewidth=1, linecolor="k")
inner_kws
を使用して、パラメータをinnerプロット関数に直接渡します。sns.violinplot(data=df, x="age", inner_kws=dict(box_width=15, whis_width=2, color=".8"))