stripplot() 和 swarmplot() 的區別是什麼?


什麼是 swarmplot() 和 stripplot()?

在 Python 的 seaborn 庫中,swarmplot() 使用一種稱為“蜂群”的技術來定位點,該技術調整點以避免重疊。這將生成一個點分散且更容易區分的圖,但不會保留類別內點的相對位置。而 stripplot() 將點定位在分類軸上,每個刻度一個類別。點不會被調整以避免重疊,因此如果同一類別中有許多點,它們可能會重疊。

特性

stripplot()

swarmplot()

用途

顯示單個變數的分佈

顯示單個變數的分佈,同時避免點之間的重疊

視覺化

點沿數軸繪製,並使用抖動位置偏移來避免重疊

點定位在數軸上,使其不會相互重疊

實用性

用於顯示單個變數的分佈,尤其是在資料點數量很大且點之間重疊很嚴重的情況下

用於顯示單個變數的分佈,同時避免點之間的重疊並保留各個資料點的空間資訊

重疊

點可能嚴重重疊

點不會嚴重重疊

可擴充套件性

隨著資料點數量的增加,可擴充套件性較差

隨著資料點數量的增加,可擴充套件性更好

stripplot() 和 swarmplot() 都是 Python 的 Seaborn 庫中的函式,用於視覺化不同類別數值變數的分佈。

Strip Plot(條形圖)

條形圖是一種單軸散點圖,用於視覺化多個不同的單維值的分佈。值顯示為沿單軸的點,並且大小相同的點可能會重疊。可以更改點的顏色或不透明度以表示重疊的值,或者可以使用抖動圖或計數圖來代替。通常,許多條形圖並排顯示,以檢查跨不同值、組或範圍的資料點的分佈。

示例 1

import pandas as p
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame({"Quantity": [15,26,17,18,15,36,27,18,25,16,17,28,15,16,17,28],

"Price":[1900,1000,1500,1600,1300,1400,1500,1800,1100,1200,1400,1500,1600,1700,1800,1900],
   "Month" : [2,3,2,3,2,3,2,3,4,4,4,5,5,5,4,3],
   "Merchandise":['X','X','X','X','Z','Z','Z','Z',
   'Y','Y','Y','Y','X','X','Z','Z']})

sns.swarmplot(data = df, y = "Price", x = "Quantity")
plt.show()

程式碼解釋

我們在程式碼開頭包含了 Pandas 為 pd,matplotlib.pyplot 為 plt,Seaborn 為 sns 的包。然後使用 DataFrame() 函式指定資料集合。此函式連線到 Pandas 模組。建立了四個單獨的陣列。第一個陣列顯示售罄商品的數量。第二個陣列顯示商品的價格。第三個陣列保留月份的記錄。最後一個數組列出了產品名稱。

在下一步中,我們使用 swarmplot() 方法生成蜂群圖。最後,我們使用 matplotlib.pyplot 庫的 display() 函式。

示例 2

統計類別平面為每個“色相”引數維度指定了一個區域。當我們使用“色相”選項並將“dodge”引數設定為 True 時,物件會針對不同的色相變化而分離。“palette”屬性表示多個色相屬性的陰影。

import seaborn
import matplotlib.pyplot as plt
seaborn.set(style="whitegrid")
tips = seaborn.load_dataset("tips")

seaborn.swarmplot(x="day", y="total_bill", hue="smoker",
   data=tips, palette="Set2", dodge=True)

plt.show()

程式碼解釋

在新增 matplotlib.pyplot 和 Seaborn 庫後,我們呼叫 Seaborn 包中的 set() 方法。我們向此函式提供樣式作為引數。我們將樣式引數的值設定為“white grid”。它顯示圖形的背景顏色。

現在,我們使用載入的 dataset() 方法來獲取內建資料框。此函式採用輸入“tips”,並從 Seaborn 標頭檔案中派生。接下來,我們使用 swarmplot() 函式構建蜂群圖。在此,函式的引數是兩個軸的標題、顏色值、資料、調色盤和躲避。y 軸顯示總賬單的記錄,而 x 軸顯示日期的記錄。

Swarm Plot(蜂群圖)

當您希望顯示所有觀察結果以及對潛在分佈的描述時,可以單獨建立蜂群圖,也可以將其作為箱線圖或小提琴圖的補充。

為了適當地排列點,需要在資料和點座標之間進行精確的轉換。因此,必須在建立繪圖之前設定非預設軸限制。

可以使用各種格式傳遞輸入資料,包括:

  • 直接傳遞給 x、y 和/或 hue 引數的列表、numpy 或 pandas 資料向量表示的序列物件。

  • “長格式”DataFrame,在這種情況下,資料繪圖由 x、y 和 hue 變數控制。

  • 繪製每個數值列的“寬格式”DataFrame。

  • 向量集合或陣列。

示例 1

繪製單個水平蜂群圖:

import seaborn as sns
sns.set(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.swarmplot(x=tips["total_bill"])

示例 2

根據類別(此處為地區和事件)對資料點進行分組。

import seaborn

seaborn.set(style='whitegrid')
fmri = seaborn.load_dataset("fmri")
 
seaborn.swarmplot(x="timepoint",
   y="signal",
   hue="region",
   data=fmri)

結論

總而言之,stripplot() 和 swarmplot() 是 Python Seaborn 庫中用於建立散點圖的函式。這些圖視覺化兩個變數之間的關係和資料分佈。

Stripplot() 是一個函式,它繪製資料的散點圖,點沿 x 軸展開。它允許您指定 x 和 y 變數、資料以及各種自定義選項,例如點的顏色、大小和樣式。Stripplot() 可用於視覺化分類變數的每個類別中連續變數的分佈。

Swarmplot() 是一個函式,它繪製資料的散點圖,點沿 x 軸展開以避免重疊。它允許您指定 x 和 y 變數、資料以及各種自定義選項,例如點的顏色、大小和樣式。Swarmplot() 可用於視覺化分類變數的每個類別中連續變數的分佈,尤其是在點數較多的情況下。

更新於:2023年5月5日

瀏覽量:1000+

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.