知识点:热力图和子图的绘制
- 介绍了热力图的绘制方法
- 介绍了enumerate()函数
- 介绍了子图的绘制方法
enumerate ( ) 是 Python 内置函数,用于将可迭代对象(如列表、元组、字符串)组合为索引序列,同时返回元素和其对应索引。这在需要同时访问元素和索引的循环中特别有用。
enumerate(iterable, start=0)
iterable
:必需,支持迭代的对象(如列表、元组、字符串)。start
:可选,指定索引起始值,默认为0
。features = ['thalach','cp','oldpeak','slope',] for i, feature in enumerate(features): print(f"索引 {i} 对应的特征是: {feature}") # 索引 0 对应的特征是: thalach # 索引 1 对应的特征是: cp # 索引 2 对应的特征是: oldpeak # 索引 3 对应的特征是: slope
作业:
尝试对着心脏病数据集绘制热力图和单特征分布的大图(包含几个子图)
绘制热力图
# 提取连续值特征
continuous_features = ['age','sex','cp','trestbps','chol','fbs','restecg','thalach','exang','oldpeak','slope','ca','thal','target']
# 计算相关系数矩阵
correlation_matrix = data[continuous_features].corr()
# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300
# 绘制热力图(添加annot_kws={'fmt': '.1f'})
plt.figure(figsize=(10, 8))
sns.heatmap(
correlation_matrix,
annot=True,
fmt = '.1f', # 指定数值显示格式为保留一位小数的浮点数
cmap='coolwarm', # 这是一个从蓝色(冷色调)到红色(暖色调)的渐变配色方案,表示数值从低到高的变化
vmin=-1,
vmax=1
)
plt.title('Correlation Heatmap of Continuous Features')
plt.show()
绘制子图
# 定义要绘制的特征
features = ['thalach','cp','oldpeak','slope',]
# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300
# 创建一个包含 2 行 2 列的子图布局
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
# 使用 for 循环遍历特征
for i in range(len(features)):
row = i // 2 # 计算当前特征在子图中的行索引,// 是整除,即取整 ,之所以用整除是因为我们要的是行数
# 例如 0//2=0, 1//2=0, 2//2=1, 3//2=1
col = i % 2 # 计算当前特征在子图中的列索引,% 是取余,即取模
# 例如 0%2=0, 1%2=1, 2%2=0, 3%2=1
# 绘制箱线图
feature = features[i]
axes[row, col].boxplot(data[feature].dropna())
axes[row, col].set_title(f'Boxplot of {feature}')
axes[row, col].set_ylabel(feature)
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()