美文网首页
R语言 用Pheatmap包 简单画相关系数热图

R语言 用Pheatmap包 简单画相关系数热图

作者: 明天吃什么饭 | 来源:发表于2019-04-21 14:53 被阅读0次

    包的安装

    install.packages(pheatmap)
    

    包的导入

    #导入pheatmap包
    library(pheatmap)
    #
    

    数据整理

    做相关系数矩阵的时候,经常会碰见有一列的数值唯一,是常数,没有办法进行相关系数矩阵的运算。
    解决办法是采用jitter包,在数值矩阵的每一行加上随机小扰动,这些扰动不会过多影响相关系数矩阵。

    #导入包
    library(base)
    x = jitter(rep(0,length(数值矩阵)))
    for(i in 1:dim(数值矩阵)[1]){
      数值矩阵[i,] = 数值矩阵[i,] + x[i]
    }
    

    常规画热图,采用默认参数

    #例如做相关系数矩阵热图
    pheatmap(相关系数矩阵)
    

    结果输出如下


    图1

    特殊需求:限定相关系数的范围

    如果对相关系数的范围有要求,比如固定的范围,需要添加其他的参数

    #color是分配色块,"RdBu"代表从红色到蓝色变化,这里分配了36个色块
    #breaks代表颜色的范围,从-0.8到1,以0.05为间隔,一共36个间隔, 对应36个色块
    # 这里必须和上面color的36个色块对应起来
    pheatmap(相关系数矩阵,breaks=seq(-0.8,1,0.05),color=colorRampPalette(rev(brewer.pal(10, "RdBu")))(36))
    

    结果为


    图2

    这个一般用来比较多个相关系数热图之间的区别。

    图像的高清保存

    美丽的热图生成了,要高清保存到电脑,需要用到以下语法

    jpeg('文件输出路径',width = 400, height = 350)
    pheatmap(相关系数矩阵,breaks=seq(-0.8,1,0.05),color=colorRampPalette(rev(brewer.pal(10, "RdBu")))(36))
    dev.off()
    

    图像高清保存的秘诀就是设置合适的宽度高度,经过我的实验,宽度为400,高度为350的输出效果较好,小伙伴们如果有更好的比例也可以评论一下或是私信我。

    整齐排列图片

    有时候生成了一系列的图片,如何整齐排列这些图片?

    我自己用的是illustrator,比较方便的一点是,它可以在你的原始图片有改动后自动更新,省去手动修改的麻烦。

    看在我辛苦码字的份上,小伙伴们觉得有用的话,点个赞👍吧,我会更有动力分享我的代码思路,【比心】❤️。

    相关文章

      网友评论

          本文标题:R语言 用Pheatmap包 简单画相关系数热图

          本文链接:https://www.haomeiwen.com/subject/cgzdgqtx.html