箱線圖
箱線圖是展示數(shù)字變量和分類變量之間關(guān)系的另一種方式。與小提琴圖相比,箱線圖更側(cè)重于數(shù)據(jù)的摘要,主要報告每個分類級別數(shù)字值的一組描述統(tǒng)計學(xué)信息??梢允褂?seaborn 的 boxplot 函數(shù)創(chuàng)建箱線圖。
plt.figure(figsize = [10, 5])
base_color = sb.color_palette()[0]
# left plot: violin plot
plt.subplot(1, 2, 1)
ax1 = sb.violinplot(data = df, x = 'cat_var', y = 'num_var', color = base_color)
# right plot: box plot
plt.subplot(1, 2, 2)
sb.boxplot(data = df, x = 'cat_var', y = 'num_var', color = base_color)
plt.ylim(ax1.get_ylim()) # set y-axis limits to be same as left plot
注意,這里使用了 "color" 參數(shù)使每個方框的顏色一樣。為了更好地比較小提琴圖和箱線圖,我們在第二個圖形上添加了 ylim 表達(dá)式,使兩個圖形的 y 軸范圍相符。我們將 violinplot 返回的 Axes 對象分配給一個變量,并使用 ax1 以程序方式獲得這些范圍值。
(文檔:Axes 對象)

小提琴圖的內(nèi)部方框和線條對應(yīng)于箱線圖的方框和須線。在箱線圖中,方框的中間線條表示分布的中值,方框的頂部和底部分別表示數(shù)據(jù)的第三四分位數(shù)和第一四分位數(shù)。因此,方框的高度是四分位差 (IQR)。從方框的頂部和底部,須線表示從第一四分位數(shù)或第三四分位數(shù)到最低值或最大值的范圍。通常,須線長度會設(shè)置最大范圍;默認(rèn)情況下,設(shè)為 1.5 乘以 IQR。對于 γ 級別,底部須線下方有數(shù)據(jù),表示在第一四分位數(shù)下方有大于 1.5x IQR 的單個離群值。
對比兩個圖形后發(fā)現(xiàn),箱線圖對數(shù)據(jù)的總結(jié)比小提琴圖要整潔。使用箱線圖更容易比較不同組的統(tǒng)計值。如果你有很多組數(shù)據(jù)要比較,或者要構(gòu)建解釋性圖形,則箱線圖更值得考慮??梢詮南渚€圖中清晰地看出,δ 組的中值最低。另一方面,箱線圖對數(shù)據(jù)分布的細(xì)節(jié)描繪沒有小提琴圖清晰:無法在 α 級別的值中看到微弱的雙峰性。小提琴圖可能更適合探索數(shù)據(jù),尤其因為 seaborn 還默認(rèn)地包含箱線圖實現(xiàn)。
其他版本
和 violinplot 一樣,boxplot 也可以水平地呈現(xiàn)箱線圖,將數(shù)字和分類特征設(shè)為相應(yīng)的參數(shù)即可。
base_color = sb.color_palette()[0]
sb.boxplot(data = df, x = 'num_var', y = 'cat_var', color = base_color)

在 violinplot 中,除了默認(rèn)的迷你箱線圖之外,還有一個在小提琴圖中繪制摘要統(tǒng)計信息的其他選項。通過設(shè)置 inner = 'quartile’,將在三個中間四分位數(shù)的小提琴區(qū)域繪制三條線。很粗的破折線表示中值,分別位于兩側(cè)的兩個破折線更短的線條表示第一四分位數(shù)和第三四分位數(shù)。
base_color = sb.color_palette()[0]
sb.violinplot(data = df, x = 'cat_var', y = 'num_var', color = base_color,
inner = 'quartile')
