如何在 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 作为白色,则必须定义不同的调色板,因为您的调色板仅包含红色。
下面是我的代码:
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 作为白色,则必须定义不同的调色板,因为您的调色板仅包含红色。