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