【问题标题】:How do you make a heat map and cluster with NA values?如何使用 NA 值制作热图和聚类?
【发布时间】:2017-05-08 13:06:08
【问题描述】:

我正在尝试使用我的数据制作热图,但很难正确编码。
我的矩阵充满了 log(x+1) 值,这样我就不会遇到 log(0) 错误但是由于我的数据的性质,我有一堆 0 值,它们掩盖了热图的任何趋势可能会显示。因此,我想将任何 0 值着色为灰色或黑色,然后将其余数据沿蓝-白-红光谱着色。

这是我正在使用的编码,

RHeatmap <- read.delim("~/Desktop/RHeatmap.txt", row.names=1, stringsAsFactors = FALSE)

my_palette <- colorRampPalette(c("blue", "white", "red")) (n=20)
RHeatmap.matrix <- as.matrix(RHeatmap)
RHeatmap.matrix[RHeatmap.matrix==0]=NA

heatmap.2(RHeatmap.matrix,trace="none",col = my_palette, margins =  c(5,1),scale = "none", symbreaks = FALSE, Colv=TRUE, dendrogram="both",lwid=c(1.5,2.0)) 

在网上寻找如何为 0 值分配单独的颜色时,我注意到人们将它们分配为 N.As,然后可以将其编码为某种颜色。问题1:我该怎么做?

我还想知道如何使用 N.A 值进行聚类,当我尝试时收到一条错误消息,提示您无法使用 N.A 值进行聚类。

【问题讨论】:

  • 是的,您确实可以将所有零值转换为NA,然后使用na.color 参数分别为它们着色。看看this answer

标签: r heatmap missing-data


【解决方案1】:

要使其工作,您需要指定中断。注意:需要比颜色多一个中断。

library(gplots)

dat <- matrix(2**rnorm(900, sd = 5), ncol=9)
dat[sample(seq_along(dat), size = 180)] <- 0 ##setting some data to 0

my_palette <- colorRampPalette(c("yellow", "orange", "red")) (n=20)
breaks <- seq(min(dat2, na.rm = T), max(dat2, na.rm = T), length.out = 21)

dat2 <- log2(dat+1)
dat2[dat2 == 0] <- NA
heatmap.2(dat2, trace="none", na.color = "black", scale="none", 
          col = my_palette, breaks=breaks)

关于您更笼统的可视化问题的两分钱:

1) 您的所有数据都高于 0,因此我建议使用顺序颜色图,而不是发散颜色图。白色往往被视为 0,就像在这种情况下,我看到白色并自动认为它是 0

2) 您当前的热图对我来说看起来不错,即聚类和表示良好(除了颜色图)。我不确定它会变得“更好”多少,或者“更好”会是什么样子。

3) 如果您的数据中有 0,我会保留它们,只要它们有意义。这是非常依赖数据的。

4) 您可以查看不同的距离指标,这些指标可能会以不同的方式对待/加权 0 个条目。

5) 将0s 设置为NA 将更改聚类,因为默认情况下,距离仅在完整案例上计算。更多信息请见dist

【讨论】:

  • 1) 当我将矩阵设置为将 0 更改为 N.As 并将其设置为灰色时,会弹出一个错误提示“ hclustfun(distr) 中的错误:外部函数调用中的 NA/NaN/Inf ( arg 11)" 我该如何解决这个问题?我可以将 0 设置为某种颜色,这样它就不会与我的聚类冲突吗? 3) 我想我会保留 0 以显示治疗条件下蛋白质表达的完整概况,以显示蛋白质的完整概况。您是否知道任何可以很好地解释聚类和分箱的好资源?我对此非常陌生,并且没有受过很好的教育。
  • 1.使用is.infinite 检查Inf/-Inf 值,因为log(0) 产生Inf/-Inf 而不是NA。 2.您可以将0设置为特定颜色(使用col参数和您指定的颜色图。但这对聚类没有影响。3.您可以在非零数据上聚类,然后传递树状图( s) 到热图并绘制所有数据,但仅聚集在数据子集上。
猜你喜欢
  • 1970-01-01
  • 2011-07-02
  • 2017-03-19
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 2013-07-29
  • 2021-06-07
相关资源
最近更新 更多