【问题标题】:R Heatmap: Hide cellnote for cell value = 0R 热图:隐藏单元格值 = 0 的单元格注释
【发布时间】:2025-12-05 07:10:01
【问题描述】:

我有一个使用gplots 构建的工作热图,如下所示:

heatmap.2(as.matrix(matrix1),cellnote=as.matrix(matrix1),
    notecol="black",margins =c(9,6),trace="none",density.info="none",
    col=my_palette,Rowv=NA,Colv=NA,dendrogram="none",scale="row")

matrix1 中的底层数据如下所示:

A       AA        AAA        BBB         CASH

CASH    0         0          0           0
JSUB    0.22171   0          0           2.20712
SECR    2.92828   1.97112    3.53786     0.91444
SENR    18.86672 11.53339   15.06844    21.57709
SSEN    5.707     1.96225    0.57815     2.93462
SSUB    0.36507   0.07968    0           0.44985
SUB     1.0539    0          0           2.37103
T1      0         0          0           0.56024
T2      1.87901   0          0           3.00718
UT2     0         0          0           0.15787

我的matrix1 使用reshape 包创建为带有cast 函数的数据透视表,其中包含许多零。每当我的矩阵中的值为零时,我不想显示“cellnote”,因为这只会混淆热图。

然而,到目前为止,我还没有弄清楚如何做到这一点,并感谢任何建议。

谢谢!

【问题讨论】:

  • 那不是ggplot2
  • 你是对的。我的意思是说'gplots' - 很抱歉造成混乱。
  • 另一个快速提示:如果您在reshape2 中使用acast,您的数据将已经是一个矩阵,因此不需要转换为一个矩阵。

标签: r heatmap gplots


【解决方案1】:

对我来说,它只是创建一个用 NA 替换零的新矩阵并将其作为参数传递给 cellnote

matrix2 <- as.matrix(matrix1)
matrix2[matrix2 == 0] <- NA

使用matrix2重新运行代码

heatmap.2(as.matrix(matrix1),cellnote=matrix2,
      notecol="black",margins =c(9,6),trace="none",density.info="none",
      col=my_palette,Rowv=NA,Colv=NA,dendrogram="none",scale="row")

给予

(顺便说一句,你没有给my_palette,所以我为这个例子散列了它。)

【讨论】: