如何在 R heatmap.2 中的 pre-normalized 数据上使颜色键范围从 0 到 1

How to make color key range from 0 to 1 on pre-normalized data in R's heatmap.2

下面是我的代码:

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);

生成此图:

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

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

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

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