Seaborn Swarmplot

Manav Narula 2021年7月16日
Seaborn Swarmplot

散點圖是最基本和最有用的圖形之一。Python 中的 seaborn 模組可以將此類圖更進一步,並使用它們來表示分類值。

群圖是一種散點圖,用於表示分類值。它與帶狀圖非常相似,但它避免了點的重疊。我們可以使用 seaborn.swarmplot() 來建立這樣的圖表。

當樣本量很大時,不建議使用這種型別的圖。

我們將在以下程式碼中使用 swarmplot() 函式為分類值建立這樣的圖表。

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

df = pd.DataFrame({"Quantity": [5,6,7,8,5,6,7,8,5,6,7,8,5,6,7,8],
                   "Price": [9,10,15,16,13,14,15,18,11,12,14,15,16,17,18,19],
                   "Day" : [1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2],
                   "Product": ['A','A','A','A','B','B','B','B',
                              'A','A','A','A','B','B','B','B']})

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

用於分類資料的 seaborn swarmplot

在上面的示例中,我們可以將 hue 引數新增到 swarmplot() 函式,並將兩種不同產品的類別分開。我們可以使用 dodge 引數拆分兩個產品並將其設定為 True。

此外,我們還可以在 swarmplot() 函式中使用其他一些引數。可以使用 sizecolor 引數更改點的大小和顏色。我們可以使用 palette 引數更改用於不同類別的顏色組合。linewidth 引數為指定寬度的點新增邊框。可以使用 order 引數控制繪製類別的順序。

我們將嘗試在以下示例中使用上述引數。

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

df = pd.DataFrame({"Quantity": [5,6,7,8,5,6,7,8,5,6,7,8,5,6,7,8],
                   "Price": [9,10,15,16,13,14,15,18,11,12,14,15,16,17,18,19],
                   "Day" : [1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2],
                   "Product": ['A','A','A','A','B','B','B','B',
                              'A','A','A','A','B','B','B','B']})

sns.swarmplot(data = df, y = "Price", x = "Quantity", hue = 'Product', dodge = True, 
              linewidth = 2.5 , palette = 'Set2', size  = 10)

帶有色調和其他引數的 seaborn swarmplot

swarmplot() 也可以用作對盒子或小提琴圖的很好的讚美。它可以很好地瞭解資料的分佈。

我們可以使用以下程式碼在群圖上新增一個箱線圖。

import random 
import numpy as np
import seaborn as sns

n = random.sample(range(0,50),30) 
arr = np.array(n)
sns.boxplot(n)
sns.swarmplot(n, color = 'red')

swarmplot 上的 seaborn 箱線圖

catplot() 函式也可以建立這樣的群圖。為此,我們需要將 catplot() 函式中 kind 引數的值指定為 swarm

Author: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn