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

在R中绘制共现邻接矩阵热图时忽略低于阈值的值

问题:如何在heatmap.2中忽略共现矩阵里低于特定阈值的值?

我有一个共现邻接矩阵(netm),其中大部分值为0。目前使用以下代码绘制热图:

require(gplots)
heatmap.2(netm,col=c("gold", "dark orange","orange","yellow"), Rowv=F, Colv=F, dendrogram="none", scale="none", trace="none")

我不想在热图中绘制共现矩阵中低于3的值,请问该怎么操作?

我的共现矩阵数据快照:

bacardi breezer aldi rum white coconut
bacardi      0       2     0    1     0       0
breezer      2       0     0    0     0       0
aldi         0       0     0    1     1       0
rum          1       0     1    0     1       1
white        0       0     1    1     0       0
coconut      0       0     0    1     0       0
drinks       0       0     0    1     0       1
daniel       0       0     0    1     0       0

解决方案

嗨,这个需求很好实现!核心思路是把矩阵中低于阈值(这里是3)的值替换成NA,因为heatmap.2会识别NA值,并且可以通过参数指定这些位置的显示颜色(比如设为和背景一致的白色,就相当于“忽略”它们了)。具体步骤如下:

1. 预处理矩阵,替换低于阈值的值为NA

首先定义你的阈值,然后把矩阵中所有小于这个阈值的元素替换成NA(建议复制原矩阵,避免修改原始数据):

# 设置阈值
threshold <- 3
# 复制原矩阵
netm_filtered <- netm
# 将低于阈值的值替换为NA
netm_filtered[netm_filtered < threshold] <- NA

2. 绘制处理后的热图

在调用heatmap.2时,使用na.color参数指定NA值对应的颜色(推荐设为白色,和背景融合,达到“不显示”的效果):

library(gplots)

heatmap.2(netm_filtered,
          col=c("gold", "dark orange","orange","yellow"),
          Rowv=F, Colv=F, dendrogram="none",
          scale="none", trace="none",
          na.color="white") # 关键参数:设置NA的显示颜色

额外说明

  • 如果你不想用NA,也可以把低于阈值的值设为0,但这样0会被映射到你指定的第一个颜色(gold),无法真正“忽略”,所以用NA是更直观的方案。
  • 你也可以根据需求调整na.color的颜色,比如设为灰色,用来区分空白和真正的0值(不过你的矩阵里0本来就是低共现,所以白色更合适)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:28:01