You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:12:05