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 的圖塊,並新增觀測值或箱形圖統計資訊。

小提琴圖的作用與箱型圖相似。它顯示依據一個(或多個)變數分組後資料點的分布。與箱型圖不同的是,每個小提琴圖都是使用底層分布的核密度估計值繪製的。

請參閱教學以取得更多資訊。

注意

預設情況下,此函式會將其中一個變數視為類別變數,並在相關軸上的序數位置 (0, 1, ... n) 繪製資料。從 0.13.0 版開始,您可以設定 native_scale=True 來停用此行為。

參數:
dataDataFrame、Series、dict、array 或陣列清單

用於繪圖的資料集。如果缺少 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() 可以解譯的內容,或是將色調層級對應到 matplotlib 顏色的字典。

saturation浮點數

在其中繪製填滿顏色的原始飽和度比例。較大的圖塊通常使用不飽和的顏色看起來會比較好,但如果您想要顏色與輸入值完美匹配,請將此設定為 1

fill布林值

如果為 True,則使用實心圖塊。否則,繪製成線條藝術。

v0.13.0 版中的新功能。

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

小提琴內部的資料表示方式。下列其中之一

  • "box":繪製一個小型箱型圖

  • "quart":顯示資料的四分位數

  • "point""stick":顯示每個觀測值

split布林值

顯示未鏡像的分布,使用 hue 時會交替顯示兩側。

在 v0.13.0 版中變更:先前,此選項需要具有正好兩個層級的 hue 變數。

width浮點數

沿著 orient 軸分配給每個元素的寬度。當 native_scale=True 時,它是相對於原生刻度中兩個值之間的最小距離。

dodge“auto” 或 bool

當使用色調映射時,是否應沿著 orient 軸縮小和移動元素以消除重疊。如果為 "auto",當 orient 變數與類別變數交叉時設為 True,否則設為 False

在 0.13.0 版本中變更:新增 "auto" 模式作為新的預設值。

gapfloat

沿著 orient 軸以此因子縮小,以在閃避的元素之間增加間隙。

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)。當 NoneFalse 時,seaborn 會延遲到現有的軸刻度。

v0.13.0 版中的新功能。

native_scalebool

當為 True 時,類別軸上的數值或日期時間值將保留其原始刻度,而不是轉換為固定的索引。

v0.13.0 版中的新功能。

legend“auto”、“brief”、“full” 或 False

如何繪製圖例。如果為「brief」,數值 huesize 變數將以均勻間隔的值樣本表示。如果為「full」,則每個群組都會在圖例中取得一個條目。如果為「auto」,則根據層級數量在簡短或完整表示之間選擇。如果為 False,則不會新增圖例資料,也不會繪製圖例。

v0.13.0 版中的新功能。

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

自 v0.13.0 版本起已棄用:請參閱 density_norm

scale_huebool

自 v0.13.0 版本起已棄用:請參閱 common_norm

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

自 v0.13.0 版本起已棄用:請參閱 bw_methodbw_adjust

inner_kws鍵、值對應的字典

「內部」繪圖的關鍵字引數,傳遞至下列其中一項:

此外,使用 inner="box" 時,關鍵字 box_widthwhis_widthmarker 會針對「箱型」繪圖的元件接收特殊處理。

v0.13.0 版中的新功能。

axmatplotlib 軸

將繪圖繪製於其上的軸物件,否則使用目前的軸。

kwargs鍵、值對應

小提琴圖塊的關鍵字引數,傳遞至 matplotlib.axes.Axes.fill_between()

傳回值:
axmatplotlib 軸

傳回繪製有繪圖的軸物件。

另請參閱

boxplot

具有類似 API 的傳統箱型圖。

stripplot

一個變數為類別的分散圖。可以與其他繪圖結合使用以顯示每個觀察值。

swarmplot

點不重疊的類別散佈圖。可以與其他繪圖結合使用以顯示每個觀察值。

catplot

將類別繪圖與 FacetGrid 結合。

範例

預設的小提琴圖以兩種方式表示分佈:顯示對稱核密度估計 (KDE) 的圖塊,以及箱型圖的四分位數/鬚狀線

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

在雙變數繪圖中,其中一個變數將「分組」,以便繪製多個小提琴圖

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

預設情況下,「內部」表示會與 linewidthlinecolor 參數一起縮放

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

使用 inner_kws 將參數直接傳遞至內部繪圖函式

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