seaborn stripplot()和swarmplot()之间的区别是什么
Swarmplot()和Stripplot()是什么
在Python的seaborn库中,swarmplot()使用一种称为“beeswarm”的技术来确定点的位置,以避免重叠。这样可以使点分散开,并且更容易区分,但是点在某个类别内的相对位置不会保留。而stripplot()则将点放置在一个分类轴上,每个刻度代表一个类别。点不会被调整以避免重叠,因此如果同一个类别中有许多点,它们可能会重叠。
特性 | stripplot() | swarmplot() |
---|---|---|
目的 | 显示单个变量的分布 | 显示单个变量的分布,避免点之间的重叠 |
可视化 | 点沿着数轴绘制,通过位置偏移来避免重叠 | 点被放置在数轴上,彼此之间不重叠 |
实用性 | 适用于展示单个变量的分布,尤其在数据点数量大且点之间重叠显著的情况下更有用 | 适用于展示单个变量的分布,避免点之间的重叠,并保留各个数据点的位置信息 |
重叠 | 点可能会重叠显著 | 点不会重叠显著 |
可扩展性 | 随着数据点数量的增加,可扩展性较低 | 随着数据点数量的增加,可扩展性较高 |
stripplot()和swarmplot()都是Python中Seaborn库中的函数,用于可视化不同类别的数值变量的分布。
Strip Plot
使用条带图(strip plot)来可视化几个不同的一维值的分布,条带图是一种单轴散点图。数值以点的形式显示在单个轴上,相同大小的点可能会重叠。可以改变点的颜色或透明度来表示重叠的值,或者可以使用抖动图(jitter plot)或计数图(counts 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()方法生成swarm图。最后我们使用matplotlib.pyplot库的display()函数。
示例2
统计类别平面为每个”hue”参数维度指定了一个特定的区域。当我们使用”hue”选项并将”dodge”参数设置为True时,不同的hue变化下各个对象被隔离开来。”palette”属性代表了多个hue属性的色调。
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”,它显示图表的背景颜色。
我们现在使用loaded dataset()方法来获取内置的数据框。该函数接受输入参数”tips”,并来自Seaborn头文件。接下来,我们使用swarmplot()函数构造swarm图表。在这里,函数的参数是两个轴的标题、颜色值、数据、调色板和闪躲。在y轴上显示总账单的记录,在x轴上显示天数的记录。
Swarm图
当您希望将所有观测结果与底层分布的描述相结合显示时,可以单独创建swarm图或作为箱线图或小提琴图的补充。
为了正确排列点,需要在创建图表之前确立数据和点坐标之间的精确转换。因此,在绘制图表之前必须建立非默认的轴限制。
可以使用各种格式传递输入数据,包括:
- 直接将数据向量的list、numpy或pandas表示传递给x、y和/或hue参数的series对象。
-
“长格式”数据框,此时数据绘图由x、y和hue变量控制。
-
“宽格式”数据框,绘制每个数值列。
-
一组或向量数组。
示例1
绘制一个单独的水平swarm图。
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()对于可视化连续变量在每个分类变量中的分布非常有用,特别是当数据点数量较大时。