如何在seaborn heatmap中屏蔽特定数值仅展示±0.25区间的相关系数
Seaborn热图仅展示±0.25区间相关系数的实现方案
核心逻辑是通过掩码标记超出范围的数值位置,绘图时直接屏蔽对应区域即可,具体实现步骤如下:
- 第一步:导入依赖,准备相关系数矩阵
import seaborn as sns import numpy as np import matplotlib.pyplot as plt # 替换为你自己的相关系数矩阵,此处为示例随机矩阵 corr_matrix = np.random.randn(8, 8)
- 第二步:生成掩码矩阵
掩码中True对应需要屏蔽的区域,也就是绝对值大于0.25的数值位置:
mask = np.abs(corr_matrix) > 0.25
- 第三步:绘制热图
直接将掩码传入heatmap的mask参数即可实现屏蔽,同时可以固定色阶范围优化显示效果:
plt.figure(figsize=(9, 7)) sns.heatmap( corr_matrix, mask=mask, # 核心参数,传入掩码屏蔽对应区域 annot=True, # 开启数值标注,仅会显示未被屏蔽的区间数值 vmin=-0.25, vmax=0.25, # 固定色阶到±0.25,避免色阶受超出范围的数值影响 cmap="coolwarm", cbar=True ) plt.show()
- 可选自定义设置
如果需要调整屏蔽区域的显示样式,可以先对原始矩阵做截断再绘图:
# 将超出±0.25的数值替换为空值 processed_corr = corr_matrix.copy() processed_corr[np.abs(processed_corr) > 0.25] = np.nan # 绘图时自定义空值区域的颜色 sns.heatmap( processed_corr, annot=True, vmin=-0.25, vmax=0.25, cmap="coolwarm", na_color="lightgray" # 自定义屏蔽区域的填充色 )
内容的提问来源于stack exchange,提问作者user2543
相关产品推荐
相关产品推荐

