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 或陣列清單
用於繪圖的資料集。如果缺少
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()
可以解譯的內容,或是將色調層級對應到 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)。當
None
或False
時,seaborn 會延遲到現有的軸刻度。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
自 v0.13.0 版本起已棄用:請參閱
common_norm
。- bw{‘scott’, ‘silverman’, float}
自 v0.13.0 版本起已棄用:請參閱
bw_method
和bw_adjust
。- inner_kws鍵、值對應的字典
「內部」繪圖的關鍵字引數,傳遞至下列其中一項:
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
會針對「箱型」繪圖的元件接收特殊處理。v0.13.0 版中的新功能。
- axmatplotlib 軸
將繪圖繪製於其上的軸物件,否則使用目前的軸。
- kwargs鍵、值對應
小提琴圖塊的關鍵字引數,傳遞至
matplotlib.axes.Axes.fill_between()
。
- 傳回值:
- axmatplotlib 軸
傳回繪製有繪圖的軸物件。
另請參閱
範例
預設的小提琴圖以兩種方式表示分佈:顯示對稱核密度估計 (KDE) 的圖塊,以及箱型圖的四分位數/鬚狀線
df = sns.load_dataset("titanic") sns.violinplot(x=df["age"])
在雙變數繪圖中,其中一個變數將「分組」,以便繪製多個小提琴圖
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)
預設情況下,「內部」表示會與
linewidth
和linecolor
參數一起縮放sns.violinplot(data=df, x="age", linewidth=1, linecolor="k")
使用
inner_kws
將參數直接傳遞至內部繪圖函式sns.violinplot(data=df, x="age", inner_kws=dict(box_width=15, whis_width=2, color=".8"))