二维核密度图能够直观地呈现两个变量之间的联合分布情况。通过平滑的密度曲线,可以观察数据的集中趋势、离散程度以及是否存在多峰等特征。本节学习使用python绘制更加美观且直接的二维核密度图
# 导入所需的库
import pandas as pd # 用于数据处理和分析
import numpy as np # 用于数值计算
import seaborn as sns # 用于绘制统计图表
import matplotlib.pyplot as plt # 用于绘制图形# 设置随机种子以确保结果可复现
np.random.seed(42) # 设置随机种子为42,每次运行代码时生成的随机数相同# 生成随机数据集
n_samples = 1000 # 数据集大小,定义样本数量为1000
insurance = pd.DataFrame({ # 创建一个Pandas DataFrame来存储数据"age": np.random.randint(18, 65, n_samples), # 随机生成年龄,范围为18到65岁"bmi": np.random.normal(25, 5, n_samples), # 随机生成BMI值,均值为25,标准差为5"charges": np.random.normal(10000, 5000, n_samples) # 随机生成医疗费用,均值为10000,标准差为5000
})# 设置绘图参数
my_dpi = 96 # 定义图像的DPI(每英寸点数),用于控制图像的分辨率
plt.figure(figsize=(480 / my_dpi, 480 / my_dpi), dpi=my_dpi) # 创建一个图形窗口,设置其大小和DPI# 绘制联合分布图
sns.jointplot(x=insurance["bmi"], y=insurance["charges"], kind="scatter", color="blue")
# 使用Seaborn的jointplot绘制BMI与医疗费用的联合分布图
# x=insurance["bmi"]:指定x轴数据为BMI
# y=insurance["charges"]:指定y轴数据为医疗费用
# kind="scatter":指定绘制散点图
# color="blue":设置散点的颜色为蓝色# 添加标题和标签
plt.suptitle("BMI vs. Charges", fontsize=16, y=1.05) # 添加总标题,标题为"BMI vs. Charges",字体大小为16,位置向上调整
plt.xlabel("BMI (Body Mass Index)", fontsize=12) # 设置x轴标签为"BMI (Body Mass Index)",字体大小为12
plt.ylabel("Charges (Medical Expenses)", fontsize=12) # 设置y轴标签为"Charges (Medical Expenses)",字体大小为12# 显示图形
plt.show() # 显示绘制的图形