python绘图之swarmplot分布散点图

swarmplot 是 Seaborn 提供的一种用于展示分类数据分布的散点图。它的主要作用是将数据点按照分类变量(通常是离散变量)进行分组,并在每个分类中以一种非重叠的方式展示数据点的位置。这种可视化方式可以帮助我们直观地理解数据在不同分类下的分布情况,同时避免了数据点之间的重叠,使得数据的细节更加清晰。本节我们学习使用python绘制swarmplot分布散点图.

python 复制代码
import seaborn as sns  # 导入Seaborn库,用于数据可视化
import matplotlib.pyplot as plt  # 导入Matplotlib库,用于绘图
import pandas as pd  # 导入Pandas库,用于数据处理
import numpy as np  # 导入NumPy库,用于数值计算

# 生成示例数据
np.random.seed(42)  # 设置随机种子,确保每次运行代码时生成的随机数相同,便于结果复现
data_size = 100  # 定义数据集的大小,即生成100个数据点

# 随机生成是否吸烟的数据
smoker_status = np.random.choice(['yes', 'no'], size=data_size, p=[0.3, 0.7])
# 使用np.random.choice生成一个随机数组,表示是否吸烟的状态。
# 参数:
#   ['yes', 'no']:可能的取值,表示吸烟状态。
#   size=data_size:生成100个随机值。
#   p=[0.3, 0.7]:概率分布,表示30%的人吸烟,70%的人不吸烟。

# 根据吸烟状态生成费用数据
# 假设吸烟者的费用更高
charges = np.random.normal(loc=10000, scale=5000, size=data_size)
# 使用np.random.normal生成正态分布的费用数据。
# 参数:
#   loc=10000:均值为10000。
#   scale=5000:标准差为5000。
#   size=data_size:生成100个数据点。
charges[smoker_status == 'yes'] += 5000
# 对于吸烟者(smoker_status为'yes'),在其原有费用基础上额外增加5000,模拟吸烟者更高的费用。

# 创建数据框
insurance = pd.DataFrame({'smoker': smoker_status, 'charges': charges})
# 使用Pandas的DataFrame将smoker_status和charges两列数据组合成一个数据框,方便后续绘图。

# 绘制 Swarmplot
plt.figure(figsize=(7, 7))  # 设置绘图窗口的大小为7x7英寸
sns.swarmplot(x='smoker', y='charges', data=insurance)
# 使用Seaborn的swarmplot绘制分类散点图。
# 参数:
#   x='smoker':x轴为smoker状态。
#   y='charges':y轴为费用。
#   data=insurance:指定数据源为insurance数据框。
plt.title('Swarmplot of Charges by Smoker Status')  # 设置图表标题
plt.xlabel('Smoker')  # 设置x轴标签
plt.ylabel('Charges')  # 设置y轴标签
plt.show()  # 显示图表
相关推荐
weixin_3077791318 分钟前
RAG 面试陷阱——混合检索并非无条件优越:一个条件反转实验
人工智能·python·面试·职场和发展
Dxy12393102161 小时前
JS DES 加密详解
开发语言·javascript·arcgis
充值内卷1 小时前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++
云和数据.ChenGuang1 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
nice_lcj5202 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
荣码4 小时前
长上下文与大文档处理:200页PDF怎么喂给AI,我踩了4个坑
java·python
樱花树下的数学喵4 小时前
手写简易 STL string|C++ 字符串底层实现
开发语言·c++
jimy14 小时前
C++ 报错的 qualifiers 的意思
开发语言·c++
databook4 小时前
Pandas 与 Polars:语法、性能和资源占用方面的对比
python·数据分析·pandas
威哥爱编程4 小时前
Python 智能体开发实战 10:本地跑得好好的,一并发就崩?把它做成一个能上线的服务
python·agent