查看原文
其他

不同数据集画出的热图,用同样的颜色区间上色?

2017-11-14 Y叔 biobabble

这个问题,其实答案就存在于《听说你还不会画热图》,我们先生成一个矩阵:

set.seed(2017-11-12) d = data.frame(matrix(rnorm(100), ncol=10)) colnames(d) = paste0('t', 1:10) rownames(d) = paste0('g', 1:10)

这个矩阵是rnorm生成的随机数,有正有负,我们再生成一个矩阵,只有正数,并且数值上比第一个矩阵要大:

d2 = abs(d) * 1.2

下面这个代码来自于《听说你还不会画热图》,定义一个color palette函数:

library(RColorBrewer) cc = colorRampPalette(rev(brewer.pal(n = 7,     name = "RdYlBu")))

有了这个函数,那么这个问题就极其简单,无非是不同的数据集pool在一起取最大最小值,然后切出一堆等长区间,用上面定义的cc函数给每个区间分配一个颜色,然后用这个配色方案给不同的热图上色,那么产生的热图就拥有了同一个颜色区间。

breaks = seq(min(unlist(c(d, d2))),    max(unlist(c(d, d2))), length.out=100) library(pheatmap) p1 = pheatmap(d, color=cc(100), breaks=breaks) p2 = pheatmap(d2, color=cc(100), breaks=breaks) cowplot::plot_grid(p1$gtable, p2$gtable, ncol=2)

电梯

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存