密集散点图主要目的是生成一个可视化图表,展示 insurance
数据集中 bmi
(身体质量指数)和 charges
(医疗费用)之间的关系,并通过不同的维度对数据进行分组和区分,以便更清晰地观察数据的分布和特征。
import seaborn as sns # 导入 Seaborn,用于绘图
import matplotlib.pyplot as plt # 导入 Matplotlib,用于显示图表
import pandas as pd # 导入 Pandas,用于数据处理
import numpy as np # 导入 NumPy,用于数值计算# 设置随机种子,确保每次运行代码时生成的随机数据相同
np.random.seed(0) # 定义数据集的大小
data_size = 100 # 随机生成示例数据集
insurance = pd.DataFrame({'bmi': np.random.uniform(18, 35, data_size), # 随机生成 100 个 BMI 值,范围在 18 到 35 之间'charges': np.random.uniform(1000, 50000, data_size), # 随机生成 100 个医疗费用值,范围在 1000 到 50000 之间'sex': np.random.choice(['male', 'female'], data_size), # 随机生成 100 个性别值,选择 "male" 或 "female"'region': np.random.choice(['northwest', 'southeast', 'southwest', 'northeast'], data_size) # 随机生成 100 个地区值
})# 使用 Seaborn 的 relplot 函数绘制关系图
sns.relplot(x='bmi', # 横轴变量为 BMIy='charges', # 纵轴变量为医疗费用hue='sex', # 根据性别对数据点进行颜色区分col='region', # 按地区分列显示row='sex', # 按性别分行显示data=insurance, # 使用上面生成的 insurance 数据集height=7, # 设置每个子图的高度为 7 英寸aspect=.6 # 设置每个子图的宽高比为 0.6
)# 显示图表
plt.show()