如何配置Seaborn热力图,用两种颜色区分阈值上下数值?
实现Seaborn热力图的二元颜色划分(基于阈值)
要实现仅用两种颜色区分阈值上下的单元格,核心是自定义离散颜色映射和数值归一规则,具体步骤如下:
1. 导入依赖库
除了Seaborn和pandas,还需要matplotlib的颜色工具类:
import seaborn as sb import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap, BoundaryNorm
2. 定义核心参数与数据
# 设置你的阈值x threshold = 0.997 # 计算相关矩阵(和你原代码一致) corr_data = data.corr()
3. 自定义二元颜色映射与归一规则
# 指定两种颜色:低于阈值用蓝色,高于用红色(可自行替换十六进制色码) colors = ['#1f77b4', '#ff4b5c'] cmap = ListedColormap(colors) # 设置数值边界,分界点为阈值,覆盖你的数据范围(0.94到1) bounds = [0.94, threshold, 1] # 用BoundaryNorm实现按边界分配颜色 norm = BoundaryNorm(bounds, cmap.N)
4. 绘制热力图
把自定义的cmap和norm传入heatmap函数即可:
heatmap = sb.heatmap( corr_data, vmin=0.94, vmax=1, annot=True, cmap=cmap, norm=norm, fmt=".4f" ) plt.show()
关键说明
ListedColormap:直接定义固定的颜色列表,这里仅需两种颜色BoundaryNorm:强制将数值按设定的边界划分到对应颜色区间,确保阈值上下严格区分- 若要调整颜色,直接修改
colors中的十六进制码即可(比如纯蓝#0000ff、纯红#ff0000)
内容的提问来源于stack exchange,提问作者user22205671
相关产品推荐
相关产品推荐

