小提琴圖(violinplot())和箱線圖(boxplot())有什麼區別?


在這篇文章中,我們將學習如何使用 Python 區分小提琴圖(violinplot())和箱線圖(boxplot())。

什麼是小提琴圖?

小提琴圖是一種統計圖表,類似於箱線圖,但在每側都帶有旋轉的核密度圖。 “小提琴圖”這個名稱來源於圖表形狀類似於小提琴的形狀。

小提琴圖用於視覺化資料集的分佈,並顯示資料在不同值處的機率密度。小提琴圖顯示樣本的資料分佈,其中最厚的部分顯示值最集中的位置。相反,較細的部分顯示值較不集中的位置。

什麼是箱線圖?

箱線圖顯示了一個或多個組的數值變數的分佈。雖然它隱藏了單個數據集的資料點,但它可以輕鬆訪問中位數、四分位數和異常值。Seaborn 庫的 boxplot 函式使在 Python 中建立箱線圖變得容易。

箱線圖只能表示如此多的資訊,但它們更容易理解,尤其是在比較不同組時。雖然密度曲線更難理解且視覺上更嘈雜,但密度曲線都是關於顯示分佈資訊的。但是,當整合到小提琴圖中時,兩者相互增強以產生儘可能好的結果。

boxplot() 方法需要以下語法:

matplotlib.pyplot.boxplot(data, notch, vert, patch_artist, widths)

小提琴圖

箱線圖

以下是小提琴圖的關鍵要素以及如何解釋它們:

小提琴形狀 - 小提琴形狀是資料直方圖的平滑版本,它顯示了資料在不同值處的機率密度。小提琴最寬的部分表示資料點密度最高的地方。小提琴的較細部分表示資料點密度較低。

小提琴內部的箱體 - 小提琴圖內部的箱體表示資料集的四分位數。箱體的頂部和底部分別是上四分位數和下四分位數。箱體中間的線是資料的中位數。該框還顯示任何異常值,作為須線外部的單個點。

小提琴內部的“線”(如果存在) - 小提琴內部的線表示原始資料點。它提供了資料點實際分佈的感覺。

小提琴的寬度 - 小提琴的寬度表示樣本大小。較寬的小提琴表示較大的樣本大小,反之亦然。

箱線圖通常使用 matplotlib 庫的 boxplot() 函式建立。

箱線圖透過 numpy.random.normal() 方法生成隨機資料。均值、標準差和所需值數量用作其引數。

ax.boxplot() 函式的資料值可以是 NumPy 中的陣列陣列、Python 中的陣列列表或陣列元組。

使用 Seaborn 建立小提琴圖

一個名為 Seaborn 的 Python 包使得建立更高階的圖表變得簡單。由於其 violin 函式,它非常適合建立密度圖。您可以按照以下圖表進行操作,從一個非常簡單的小提琴圖到更專業的圖表。

使用小提琴圖的最佳實踐

考慮組的順序。

當沒有內在排序時,可以更改小提琴圖中繪製組的順序,這可以幫助您更多地瞭解資料。例如,根據組的中位數對組進行排序可以闡明它們的順序。

垂直與水平小提琴圖

小提琴圖可以是垂直的或水平的。兩者之間的主要區別在於圖表的方位。

垂直小提琴圖是一種更常見的型別,它以 x 軸作為被測量的變數,y 軸作為資料的頻率或機率密度進行繪製。小提琴形狀垂直繪製,其中小提琴最寬的部分表示資料點密度最高的地方。

另一方面,水平小提琴圖以 y 軸作為被測量的變數,x 軸作為頻率或機率密度進行繪製。小提琴形狀水平繪製,其中小提琴最寬的部分表示資料點密度最高的地方。

將小提琴圖繪製為垂直或水平的選擇取決於您的特定用例和您正在處理的資料。通常,垂直小提琴圖更常見,並且使用頻率更高,但在某些情況下,水平小提琴圖可能更有助於顯示比較。

基本水平箱線圖

import plotly.graph_objects as go

import numpy as np

x0 = np.random.randn(50)
x1 = np.random.randn(50) + 2 # shift mean

fig = go.Figure()
# Use x instead of y argument for horizontal plot
fig.add_trace(go.Box(x=x0))
fig.add_trace(go.Box(x=x1))

fig.show()

箱線圖大小

可以使用 width 引數更改各個箱線圖的大小。預設寬度為 1,因此任何小於該值的寬度都會為框建立較小的寬度。

import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('iris')
df.head()
sns.boxplot( x=df["species"], y=df["sepal_length"], width=0.3);
plt.show()

結論

由於配置核心和頻寬的難度增加,小提琴圖不如箱線圖等替代圖流行。此外,它在視覺上可能令人分心,尤其是在疊加圖表型別時。如果您需要製作圖表以向不熟悉小提琴圖的群體展示結果,請考慮使用更簡單、更直接的表示形式,例如箱線圖。

箱線圖是一種未充分利用的技術,可以將大量與資料相關的資訊濃縮到一個視覺化中。在進行探索性資料分析 (EDA) 時,箱線圖可以成為直方圖的絕佳補充。Matplotlib 是最早的 Python 視覺化工具之一,它提供了大量圖形和圖表以進行更好的分析。

更新於: 2023年5月5日

874 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告