You need to enable JavaScript to run this app. Python Seaborn 如何设置热力图仅展示指定阈值的正负强相关性
优惠活动
大模型
产品
解决方案
定价
更多

Python Seaborn 如何设置热力图仅展示指定阈值的正负强相关性

相关性筛选逻辑调整方案

核心改动思路

原有代码的筛选规则仅保留了相关系数高于+0.8的强正相关值,完全漏掉了≤-0.8的强负相关场景。只需要把筛选条件改成逐元素判断:只要满足≥+0.8 或者 ≤-0.8 任一阈值就保留原始相关值,不满足的位置直接置为空值(NaN),Seaborn热力图就会自动跳过空值区域,只画出符合要求的强相关块。
注意:逐元素做布尔判断的时候,必须用按位或运算符|连接两个独立判断条件,每个条件都要单独加括号,不能直接用Python原生的or连接两个条件,否则会触发维度不匹配的运行错误。

可直接复用的修改后代码

import matplotlib.pyplot as plt
import seaborn as sns

# 计算数据集的全量相关系数矩阵
corr = df2.corr()

# 核心逻辑修改:同时匹配强正、强负相关的筛选要求
kot = corr[(corr >= 0.8) | (corr <= -0.8)]

plt.figure(figsize=(60, 40))
sns.heatmap(
    kot,
    cmap="RdBu_r",
    vmin=-1,
    vmax=1,
    center=0,
    mask=kot.isna()
)
plt.show()

配套优化建议

  • 色阶适配:原代码使用的Greens是单方向正向色阶,无法对负相关数值做视觉区分,强负相关的位置会和空值的白色背景混淆;替换为RdBu_r这类发散型双色阶后,正相关、负相关会呈现明确的色彩差异,配合对称的色阶上下限,两类强相关的识别度会大幅提升。
  • 无意义自相关过滤:相关系数矩阵中,每个变量与自身的相关值固定为1.0,会自动符合≥0.8的筛选条件被展示,如果不需要展示这类无信息的自相关网格,可以在构造完kot矩阵后加入一行代码将对角线置为空值:
    import numpy as np
    np.fill_diagonal(kot.values, np.nan)
    
  • 阈值灵活调整:后续如果需要修改强相关的判定标准,只需要同步修改两个判断条件中的数值即可,比如将阈值放宽到0.7,就把条件调整为corr >= 0.7和corr <= -0.7,无需改动其他逻辑。

内容的提问来源于stack exchange,提问作者exmatelote

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 04:36:10