首页 > 解决方案 > 将 NA 值与 heatmap.2 和(指定的)中断一起使用

问题描述

我正在尝试使用带有以下断点的 heatmap.2 创建热图:

breaks = c(-100000, -10000, -1000, -100, -20, 20, 100, 1000, 10000, 100000)

颜色从蓝色变为红色,中间为白色,位于调色板指定的零值(-20 到 20 之间)附近:

colors <- colorRampPalette(c("blue", "white", "red")) (9)

我想将 NA 值着色为黑色,以便它们与白色的零值区分开来。但是,因为我有 NA 值,所以我使用的代码是:

library(gplots)
heatmap.2(MATRIX, col=colors, na.color="black", density.info="none", 
          scale="none", trace="none", Colv=FALSE, 
          breaks=c(-100000, -10000, -1000, -100, -20, 20, 
                   100, 1000, 10000, 100000))

创建以下错误:

Error in hclustfun(distr) : NA/NaN/Inf in foreign function call (arg 11)

我已经看过这里发布的问题: 如何制作热图并使用 NA 值进行聚类? 它使用以下代码进行休息:

breaks <- seq(min(dat2, na.rm = T), max(dat2, na.rm = T), length.out = 21)

和颜色:

my_palette <- colorRampPalette(c("yellow", "orange", "red")) (n=20)

但是,我无法让它与我的指定休息时间列表一起使用。

下面是一个示例数据集,就像我正在使用的那样:

Gene1 Gene2 Gene3 Gene4 Gene5 Gene6 Gene7
-100 -30 120 1790 NA 45 -1000
-4 0 -10000 10000 25 NA NA
1001 17 -4521 NA 123 31 12
NA 9087 NA -140 -1876 9087 3681

对此的任何帮助将不胜感激。

我在我正在使用的实际矩阵下面添加了:

REP_1 DDIS_2 DDIS_3 DDIS_4 DDIS_5 DDIS_6 DDIS_7 OIS_8 OIS_9

CDKN2B 2.540990 32.074968 2.146586e+01 4.859826e+00 -2.938221e+12 -4.207584e+12 -1.837675e+13 5.967526e+07 2.196071e+13 FST 12225.652147 10.145169 2.528894e+00 -2.088704e+00 1.487618e+01 3.344373e+00 -1.652349e+00 -3.029684e+04 -1.021939e+06

```DCN        1.070139     13.768018  1.333338e+03  1.959332e+00``` -1.707571e+01 -1.050936e+00 -2.748334e+02 -3.139434e+07 -1.367967e+17```
```E2F4      -1.320385 -42796.013849 -1.358740e+05 -1.550106e+05 -3.918849e+01 -1.039366e+02 -1.166989e+02  2.184948e+01  8.511640e+00```
```E2F5     126.816001     23.208083  5.867904e+00 -1.862336e+00 -2.909519e+00 -9.511401e+00 -1.112279e+03 -3.938015e+04 -7.241726e+00```
```EP300     -3.120860    -23.155158 -4.631832e+01 -4.389633e+01 -3.706228e+00 -6.220801e+00 -5.970081e+00 -2.154733e+00 -1.281695e+00```
```FBN1       2.000128      2.804892  1.334023e+00  1.129510e+01 -1.458580e+00 -3.180044e+00  1.471174e+00 -1.358247e+04 -3.097169e+09```
```FMOD              NA            NA            NA            NA            NA          NA```

标签: rheatmap

解决方案


感谢您的帮助,当建议让我意识到这只是我的数据集时,我进行了更深入的了解。如果感兴趣的话,heatmap.2 函数不起作用,至少对我来说,如果 NA 太多的话。我摆脱了主要是 NA 的列,然后它工作正常。我想它很难用如此多的缺失数据对它们进行聚类。


推荐阅读