1、使用 stripplot() 绘制类别散点图
stripplot()
是 Seaborn 中专门用于绘制分类散点图的函数。它将数据点沿着分类轴(通常是 x 轴)分布,并根据分类变量的值进行散开,以避免重叠。stripplot()
适用于小型数据集或分类变量的取值不太密集的情况。常用参数如下,
参数 | 描述 |
x | 指定分类变量的数据列,通常用于 x 轴。 |
y | 指定数值变量的数据列,通常用于 y 轴。 |
data | 包含数据的 DataFrame 或其他数据结构。 |
hue | 根据另一个分类变量对数据进行分组, 并使用不同的颜色。 |
order | 指定分类变量的顺序。 |
hue_order | 指定 hue 变量的顺序。 |
orient | 指定散点图的方向,可以是 "v"(垂直)或 "h"(水平)。 |
dodge | 控制是否分离散点以避免重叠。 |
jitter | 控制抖动的强度,以避免点的完全重叠。 |
color | 手动设置散点的颜色。 |
palette | 设置颜色调色板, 用于为不同组或类别的数据点分配颜色。 |
size | 设置散点的大小, 可以是常数值或与数据相关的列名。 |
alpha | 设置散点的透明度,范围从 |
marker | 设置散点的标记样式, 例如圆点、叉号、方块等。 |
linewidth | 设置散点的边框线宽度。 |
edgecolor | 设置散点的边框颜色。 |
ax | 指定 Matplotlib Axes 对象, 用于在其上绘制图表。 |
使用代码:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# 生成示例数据集
tips = pd.DataFrame({
'total_bill': [16.99, 10.34, 21.01, 23.68, 24.59],
'tip': [1.01, 1.66, 3.50, 3.31, 3.61],
'sex': ['Female', 'Male', 'Male', 'Male', 'Female'],
'smoker': ['No', 'Yes', 'No', 'Yes', 'No'],
'day': ['Sun', 'Thur', 'Sat', 'Sun', 'Fri'],
'size': [2, 3, 3, 2, 4]
})
order = ["Thur", "Fri", "Sat", "Sun"]
# 使用 stripplot() 绘制类别散点图
sns.stripplot(x="day", y="total_bill", data=tips, hue="sex", jitter=True, palette="Set2", order=order)
# 添加标题和标签
plt.title("cjavapy")
plt.xlabel("Day of the Week")
plt.ylabel("Total Bill")
# 显示图例
plt.legend(title="Sex")
plt.draw()
# 显示图表
plt.show()
2、使用 swarmplot() 绘制类别散点图
swarmplot()
也是用于绘制分类散点图的函数,但它在数据点的分布上更加智能,会避免数据点之间的重叠。它会尽量使数据点沿着分类轴均匀分布,不会重叠,因此适用于数据点较密集的情况。swarmplot()
可以更好地可视化数据的分布。常用参数如下,
参数 | 描述 |
x | 输入数据的变量名,用于横轴。 |
y | 输入数据的变量名,用于纵轴。 |
hue | 数据的变量,用于分类。 |
data | DataFrame 类型的数据集。 |
order | 控制类别轴上类别的顺序。 |
hue_order | 控制分类变量 hue 的顺序。 |
dodge | 当使用 hue 参数时,设置是否将条带分开。 |
orient | 控制图形的方向('v' 或 'h')。 |
color | 设置所有元素的颜色。 |
palette | 用于给不同级别的 hue 变量设置颜色。 |
size | 点的大小。 |
edgecolor | 点的边缘颜色。 |
linewidth | 点边缘的宽度。 |
使用代码:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# 生成示例数据集
tips = pd.DataFrame({
'total_bill': [16.99, 10.34, 21.01, 23.68, 24.59],
'tip': [1.01, 1.66, 3.50, 3.31, 3.61],
'sex': ['Female', 'Male', 'Male', 'Male', 'Female'],
'smoker': ['No', 'Yes', 'No', 'Yes', 'No'],
'day': ['Sun', 'Thur', 'Sat', 'Sun', 'Fri'],
'size': [2, 3, 3, 2, 4]
})
# 创建类别散点图
plt.figure(figsize=(8, 6))
sns.swarmplot(x="day", y="total_bill", data=tips, hue="sex",
order=["Thur", "Fri", "Sat", "Sun"],
dodge=True, palette="Set1", size=6,
edgecolor="gray", linewidth=0.8)
# 添加图例和标题
plt.title("cjavapy")
plt.legend(title="Sex")
plt.draw()
# 显示图表
plt.show()
3、使用catplot() 绘制类别散点图
catplot()
是 Seaborn 中用于创建分类图的高级函数,它可以用于绘制多种类型的分类图,包括散点图。可以通过设置 kind
参数为 "strip" 或 "swarm" 来绘制散点图。catplot()
非常灵活,可以使用同一个函数绘制多种不同类型的图表。catplot()
的优点在于它可以轻松添加其他自定义参数,并且可以方便地绘制多个子图。常用参数如下,
参数 | 描述 |
data | DataFrame,包含要绘制的数据。 |
x | 字符串,数据中的变量名, 用于绘制在 x 轴的数据。 |
y | 字符串,数据中的变量名, 用于绘制在 y 轴的数据。 |
hue | 字符串,DataFrame 中的变量名, 用于分组颜色编码。 |
row | 字符串,DataFrame 中的变量名, 用于创建基于行的分面网格。 |
col | 字符串,DataFrame 中的变量名, 用于创建基于列的分面网格。 |
kind | 字符串,指定绘制图表的类型 (“strip”, “swarm”, “box”, “violin”, “boxen”, “point”, “bar”, 或 “count”)。 |
height | 标量,用于设置每个面的高度。 |
aspect | 标量,用于设置每个面的纵横比。 |
palette | 调色板名称、列表或字典, 用于指定不同级别的 hue 变量的颜色。 |
legend | 布尔值或字符串,控制图例的添加。 |
legend_out | 布尔值,确定是否将图例放在图表外面。 |
使用代码:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# 生成示例数据集
tips = pd.DataFrame({
'total_bill': [16.99, 10.34, 21.01, 23.68, 24.59],
'tip': [1.01, 1.66, 3.50, 3.31, 3.61],
'sex': ['Female', 'Male', 'Male', 'Male', 'Female'],
'smoker': ['No', 'Yes', 'No', 'Yes', 'No'],
'day': ['Sun', 'Thur', 'Sat', 'Sun', 'Fri'],
'size': [2, 3, 3, 2, 4]
})
# 创建类别散点图
sns.catplot(x="day", y="total_bill", hue="smoker", kind="strip", data=tips,
height=5, aspect=1, palette="Set2", legend=True, legend_out=True)
plt.title("cjavapy")
plt.draw()
# 显示图表
plt.show()