如何更改R中的heatmap.2颜色范围?

Lip*_*ppy 16 r colors heatmap

我正在使用gplot生成热图,显示治疗组与配对对照的log2倍变化.使用以下代码:

 heatmap.2(as.matrix(SeqCountTable), col=redgreen(75), 
           density.info="none", trace="none", dendrogram=c("row"), 
            symm=F,symkey=T,symbreaks=T, scale="none") 
Run Code Online (Sandbox Code Playgroud)

我输出了一张真实倍数变化值(即非Row-Z得分)的热图,这是我所追求的,是每个生物学家最喜欢的红黑绿配色方案!

http://i.stack.imgur.com/uhFbP.jpg

log2倍变化的实际范围是-3/+ 7,其中许多值在-2/-1和+ 1/+ 2范围内,分别显示为深红色/绿色(分别).这使整个热图非常暗,难以解释.

  • 有没有办法扭曲颜色渐变,使其线性变小?也就是说,在较小的范围内发生从黑色到非常明亮的梯度?
  • 和/或改变颜色范围是不对称的,即从-3/+ 7开始,如数据那样,而不是当前比例为-7/+ 7,黑色仍然以零为中心?

Lip*_*ppy 16

只需将symkey参数更改为FALSE,我就可以将颜色范围设为不对称

symm=F,symkey=F,symbreaks=T, scale="none"
Run Code Online (Sandbox Code Playgroud)

使用colors参数解决colorRampPalette的颜色问题,以指定每种颜色的范围,例如

colors = c(seq(-3,-2,length=100),seq(-2,0.5,length=100),seq(0.5,6,length=100))

my_palette <- colorRampPalette(c("red", "black", "green"))(n = 299)
Run Code Online (Sandbox Code Playgroud)

heatmap.2(as.matrix(SeqCountTable), col=my_palette, 
    breaks=colors, density.info="none", trace="none", 
        dendrogram=c("row"), symm=F,symkey=F,symbreaks=T, scale="none")
Run Code Online (Sandbox Code Playgroud)


小智 14

您可以尝试使用该RColorBrewer包创建自己的调色板

my_palette <- colorRampPalette(c("green", "black", "red"))(n = 1000)
Run Code Online (Sandbox Code Playgroud)

看看它是怎么样的.但我认为在你的情况下,如果你真的想把黑色保持在"中间",那么缩放会有所帮助.你可以简单地使用my_palette而不是redgreen()

我建议您查看RColorBrewer包,它们有非常漂亮的内置调色板,并查看colorbrewer的交互式网站.