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+

开启您的职业生涯

完成课程获得认证

开始学习
广告