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