Python Seaborn 类别散点图的绘制
Seaborn 是一个建立在 Matplotlib 基础上的 Python 可视化库,用于创建各种统计图形和数据可视化。类别散点图(Categorical scatter plots)是用于显示一个或两个分类变量的分布的图表。Seaborn提供了几种函数来创建类别散点图。可以使用 catplot()、stripplot() 和 swarmplot() 来绘制类别散点图,这些函数用于可视化分类变量和数值变量之间的关系。
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 |
点边缘的宽度。 |
使用代码:
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 |
布尔值,确定是否将图例放在图表外面。 |
使用代码: