seaborn.boxenplot#

seaborn.boxenplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, fill=True, dodge='auto', width=0.8, gap=0, linewidth=None, linecolor=None, width_method='exponential', k_depth='tukey', outlier_prop=0.007, trust_alpha=0.05, showfliers=True, hue_norm=None, log_scale=None, native_scale=False, formatter=None, legend='auto', scale=<deprecated>, box_kws=None, flier_kws=None, line_kws=None, ax=None, **kwargs)#

為較大的資料集繪製增強的箱形圖。

這種繪圖風格最初被命名為「字母值」圖,因為它顯示了大量被定義為「字母值」的分位數。 它類似於箱形圖,以非參數方式表示分佈,其中所有特徵都對應於實際觀察值。 通過繪製更多分位數,它可以提供有關分佈形狀的更多信息,特別是在尾部。

有關更多資訊,請參閱教學

注意

預設情況下,此函數將其中一個變數視為類別變數,並在相關軸上的序數位置(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 中新增。

dodge「auto」或布林值

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

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

width浮點數

分配給 orient 軸上每個元素的寬度。 當 native_scale=True 時,它與原生比例中兩個值之間的最小距離相關。

gap浮點數

按此因數在 orient 軸上縮小,以在閃避元素之間新增間距。

在版本 0.13.0 中新增。

linewidth浮點數

構成繪圖元素的線條寬度。

linecolor顏色

fill 為 True 時,用於線條元素的顏色。

在版本 v0.13.0 中新增。

width_method{「exponential」、「linear」、「area」}

用於字母值方塊寬度的方法

  • "exponential":表示對應的百分位數

  • "linear":每個箱形圖的寬度以固定量遞減

  • "area":表示該箱形圖中數據點的密度

k_depth{“tukey”, “proportion”, “trustworthy”, “full”} 或 int

在每個尾部計算和繪製的層級數量

  • "tukey":使用 log2(n) - 3 層,覆蓋與箱形圖鬚線相似的範圍

  • "proportion":保留大約 outlier_prop 個離群值

  • "trusthworthy":延伸到置信度至少為 trust_alpha 的層級

  • "full":使用 log2(n) + 1 層,並延伸到最極端點

outlier_propfloat

預期為離群值的數據比例;當 k_depth="proportion" 時使用。

trust_alphafloat

最極端層級的置信度閾值;當 k_depth="trustworthy" 時使用。

showfliersbool

如果為 False,則抑制離群值的繪圖。

hue_normtuple 或 matplotlib.colors.Normalize 物件

hue 變數為數值時,應用於顏色映射的數據單位正規化。如果 hue 是類別變數,則不相關。

v0.12.0 版本新增。

log_scalebool 或數字,或一對布林值或數字

將軸刻度設為對數刻度。單一值設定圖表中任何數值軸的資料軸。一對值則分別設定每個軸。數值會被解釋為所需的底數(預設為 10)。當 NoneFalse 時,seaborn 會延用現有的軸刻度。

在版本 v0.13.0 中新增。

native_scalebool

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

在版本 v0.13.0 中新增。

formattercallable

用於將類別數據轉換為字串的函數。會影響分組和刻度標籤。

在版本 v0.13.0 中新增。

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

如何繪製圖例。如果為 “brief”,則數值 huesize 變數將以均勻間隔的值樣本表示。如果為 “full”,則每個群組都會在圖例中獲得一個項目。如果為 “auto”,則根據層級數在 brief 或 full 表示之間選擇。如果為 False,則不會新增圖例數據,也不會繪製圖例。

在版本 v0.13.0 中新增。

box_kws: dict

箱形圖藝術家的關鍵字引數;傳遞給 matplotlib.patches.Rectangle

v0.12.0 版本新增。

line_kws: dict

表示中位數的線條的關鍵字引數;傳遞給 matplotlib.axes.Axes.plot()

v0.12.0 版本新增。

flier_kws: dict

表示離群值觀察的散佈圖的關鍵字引數;傳遞給 matplotlib.axes.Axes.scatter()

v0.12.0 版本新增。

axmatplotlib Axes

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

kwargs鍵,值映射

其他關鍵字引數會傳遞給 matplotlib.patches.Rectangle,並被 box_kws 中的引數取代。

返回:
axmatplotlib Axes

返回繪製了圖表的 Axes 物件。

另請參閱

violinplot

箱形圖和核密度估計的組合。

boxplot

具有相似 API 的傳統箱形圖和鬚線圖。

catplot

將類別圖與 FacetGrid 結合。

注意事項

如需更詳細的解釋,您可以閱讀介紹此圖表的論文:https://vita.had.co.nz/papers/letter-value-plot.html

範例

繪製單一水平圖表,將資料直接指定給坐標變數

sns.boxenplot(x=diamonds["price"])
../_images/boxenplot_1_0.png

依類別變數分組,參考數據框中的欄位

sns.boxenplot(data=diamonds, x="price", y="clarity")
../_images/boxenplot_3_0.png

依另一個變數分組,以箱形圖的顏色表示。預設情況下,每個箱形圖繪製都會「閃避」,以避免它們重疊;您也可以在它們之間新增一個小間隙

large_diamond = diamonds["carat"].gt(1).rename("large_diamond")
sns.boxenplot(data=diamonds, x="price", y="clarity", hue=large_diamond, gap=.2)
../_images/boxenplot_5_0.png

選擇每個箱形圖寬度的預設規則表示該箱形圖覆蓋的百分位數。或者,您可以按線性因子縮減每個箱形圖的寬度

sns.boxenplot(data=diamonds, x="price", y="clarity", width_method="linear")
../_images/boxenplot_7_0.png

另一方面,width 引數本身決定最大箱形圖的寬度

sns.boxenplot(data=diamonds, x="price", y="clarity", width=.5)
../_images/boxenplot_9_0.png

選擇要繪製的箱形圖數量有幾種不同的方法,包括基於百分位數估計的信賴區間的規則

sns.boxenplot(data=diamonds, x="price", y="clarity", k_depth="trustworthy", trust_alpha=0.01)
../_images/boxenplot_11_0.png

linecolorlinewidth 引數控制箱形圖的輪廓,而 line_kws 引數控制表示中位數的線條,flier_kws 引數控制離群值的外觀

sns.boxenplot(
    data=diamonds, x="price", y="clarity",
    linewidth=.5, linecolor=".7",
    line_kws=dict(linewidth=1.5, color="#cde"),
    flier_kws=dict(facecolor=".7", linewidth=.5),
)
../_images/boxenplot_13_0.png

也可以繪製未填滿的箱形圖。使用未填滿的箱形圖時,所有元素都將繪製為線條圖,並在使用的情況下遵循 hue

sns.boxenplot(data=diamonds, x="price", y="clarity", hue="clarity", fill=False)
../_images/boxenplot_15_0.png