分享

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

 公彦栋 2017-12-27

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

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)

电梯

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多