如何使R的热图中的预标准化数据的颜色键范围从0到1

时间:2015-01-21 03:18:56

标签: r plot heatmap

以下代码:

library(RColorBrewer)
library(gplots)
dat <- mtcars 

# normalize here
dat <- t(apply(dat, 1, function(x) log2(x+1)/sum(log2(x+1)) ))

heatcol <- brewer.pal(9, "Reds")

dat.m <- as.matrix(dat) 
heatmap.2(dat.m,
        Colv=FALSE, # We want to maintain column order
        Rowv=FALSE,  
        key=TRUE,
        symbreaks=TRUE,
        col=heatcol,
        dendrogram="none",
        scale="none", # because we already normalize
        trace="none",
        labRow=FALSE, 
        density.info="none",
        keysize=2);

产生这个数字: enter image description here

请注意:1)我们已经执行了预标准化和2)scale = "none"。 但为什么在颜色键中刻度从-0.2到0.2? 如何更改代码以使颜色键在0到1之间缩放?

理想情况下,最终绘图的值为0,编码为白色。

1 个答案:

答案 0 :(得分:1)

只需使用heatmap.2()选项symkey=FALSE,颜色键将从0到c。 0.24(矩阵的最大值)。

如果您需要0为白色,则必须定义不同的调色板,因为您的颜色只包含红色。