当前位置: 首页 > article >正文

python绘图之swarmplot分布散点图

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

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()  # 显示图表


http://www.kler.cn/a/560431.html

相关文章:

  • 法线向量在3D机器视觉中的应用
  • 开源神器KRR:用数据驱动K8s资源优化
  • 目标检测数据集-风机叶片缺损检测数据集(适用YOLO全系列)
  • 鸿蒙NEXT开发-位置服务
  • Node.js 中 child_process 模块教程
  • DeepSeek AI人工智能该如何学习?
  • 【Python 入门基础】—— 人工智能“超级引擎”,AI界的“瑞士军刀”,
  • [Android]DialogLifeCycle禁止点击背景关闭弹窗
  • 芯谷 D1517AT:多媒体音响系统的音频功率放大利器
  • uniapp h5端和app端 使用 turn.js
  • AI赋能游戏前端:效率革命与沉浸式体验的未来
  • 科技改变生活:未来趋势与应用解析
  • python类型转换深浅拷贝
  • w227springboot旅游管理系统设计与实现
  • vue3 下载文件 responseType-blob 或者 a标签
  • 软件测试的基础入门(一)
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-split_dota.py
  • c3p0、Druid连接池+工具类 Apache-DbUtils (详解!!!)
  • Git操作整体流程
  • 设计模式 之 工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)(C++)