我正在尝试使用我的数据制作热图,但却难以正确编码 我的矩阵填充了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:我该怎么做?
答案 0 :(得分:-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)你当前的热图对我来说很好看,即聚集和表现良好(旁边的颜色图)。我不确定多少&#34;更好&#34;它可以得到或者更好的&#34;更好的&#34;看起来像。
3)如果你的数据中有0,我会保留它们,只要它们有意义。这与数据有关。
4)您可以查看可能以不同方式处理/加权0条目的不同距离指标。
5)将0s
设置为NA
将更改群集,因为默认情况下,仅在完整案例中计算距离。有关详细信息,请参阅dist
。