96编辑器旗下产品
找图
终身
ID:0
到期时间:永久
退出登录
您的位置:首页 > 百科管理 > 详情

热图教程-R语言ggcorrplot包绘制相关性热图

原创:找图网 2023-04-19 15:31:35
  • 热图绘制

  • 公众号链接:

    热图是做分析时常用的展示方式,简单、直观、清晰。可以用来显示基因在不同样品中表达的高低、表观修饰水平的高低等。任何一个数值矩阵都可以通过合适的方式用热图展示。

    本篇使用R的 ggplot2 包实现从原始数据读入到热图输出的过程,并在教程结束后提供一份封装好的命令行绘图工具,只需要提供矩阵,即可一键绘图。

    上一篇讲述了Rstudio的使用作为R写作和编译环境的入门,后面的命令都可以拷贝到Rstudio中运行,或写成一个R脚本,使用 Rscript heatmap.r 运行。我们还提供了Bash的封装,在不修改R脚本的情况下,改变参数绘制出不同的图形。

    绘图首先需要数据。通过生成一堆的向量,转换为矩阵,得到想要的数据。

    注意:运算符的优先级。

    Vector转为矩阵 (matrix),再转为数据框 ()。

    虽然方法比较繁琐,但一个数值矩阵已经获得了。

    还有另外2种获取数值矩阵的方式。

    可以看到列名字中以数字开头的列都加了

    X

    。一般要尽量避免行或列名字以

    数字开头

    ,会给后续分析带去一些困难;另外名字中出现的非字母、数字、下划线、点的字符都会被转为

    ,也需要注意,尽量只用字母、下划线和数字。

    与上一步类似,只是改为文件名,不再赘述。

    数据读入后,还需要一步格式转换。在使用ggplot2作图时,有一种长表格模式是最为常用的,尤其是数据不规则时,更应该使用 (这点,我们在讲解箱线图时再说)。

    数据转换后就可以画图了,分解命令如下:

    热图出来了,但有点不对劲,横轴重叠一起了。一个办法是调整图像的宽度,另一个是旋转横轴标记。

    设置想要的颜色。

    调整legend的位置。

    调整背景和背景格线以及X轴、Y轴的标题。

    合并以上命令,就得到了下面这个看似复杂的绘图命令。

    图形出来了,就得考虑存储了,

    至此,完成了简单的heatmap的绘图。但实际绘制时,经常会碰到由于数值变化很大,导致颜色过于集中,使得图的可读性下降很多。因此需要对数据进行一些处理,具体的下次再说。

  • Heatmap――热图那些事

  • 注脚:

    scale

    标准化,根据每列或者行数据的均值标准化,主要是为了防止单个数据过大(过小),导致冷热色分布不明显的现象,可选row,column,none。

    **key

    是否需要图标以及图标大小,key=T或者F,keysize=1.5;

    Colv=NA

    表示不对行聚类,Rowv=NA不对列聚类

    dendrogram

    =‘column’or 'none'or'row' or"both"显示聚类树状图,

    trace

    ,是否需要基准线(均值,方差之类的),trace="both","row" 或者"column"

    指示图内的线, ='none'

    cexCol=1,cexRow=1

    设置xlab和ylab的字符大小

    #col

    ,优化颜色:redgreen或者greenred, 调整配色,括号内表示这个配色区间分成多少格区分度;

    breaks=seq

    自己设置颜色分度breaks=seq(-5, 5, 1))

    ** labels,labCol调整每列的标记 labCol = NA,或者 labCol = c('Age', 'A', 'B', 'C'))

    margins

    调整画布边距; margins=c(5,5),

    main

    ='Heatmap'增加标题。

    注脚:

    第一个参数是需要用pheatmap画图的数据

    color: 设置颜色。精细程度按照括号内设置的数值来定

    main: 标题名称

    fontsize: 设置row的字体大小

    scale: 设置归一化为正态分布,可选row,column,none。

    border_color: 是否显示边框及边框的颜色,NA不显示,red显示红色。支持简单的颜色单词

    na_col: 设置缺失值的颜色,支持简单颜色单词,一般设置为灰色就满好识别的。

    cluster_rows&cluster_cols: 设置是否对行或者列进行聚类,按照实际需求设置。当缺失值较多的时候是无法进行聚类的。**一个解决办法是读取数据的时候不设置缺失值。

    show_rownames&show_colnames: 是否显示行/列的名称

    treeheight_row&treeheight_col: 当前面设置了聚类之后,两边会出现聚类的树,这个参数是设置树的高度的。

    cellheight&cellwidth: 设置每个各自格的宽度和高度。

    cutree_row&cutree_col: 是否根据聚类情况把树切开,可以设置切开的份数。

    display_numbers: 设置是否显示每个单元格的值。

    legend: 设置是否显示旁边的bar状图例。

    filename: 设置输出文件的名字。可以设置的文件类型有:pdf,png,jpg,tiff,bmp。

    优点:1、支持多种的颜色配置;2、支持样品和基因的双聚类;

    缺点:基因名称显示似乎不太行,还在尝试,数据上限:2,500 rows and 300 columns;

    操作参考-没有,慢慢摸索就好,简单易上手,似乎没有数据上限?

    似乎全英,看着好累

    这个工具看着也蛮好用的,操作参考也很详细,全中文参考: 重磅推荐,超详细热图在线绘制教程资料! - ,不过我不想注册,就没尝试

  • R语言ggcorrplot包绘制相关性热图

  • 热图是科研论文中一种常见的可视化手段,而在转录组研究领域,我们常常需要分析一些基因与基因之间的相关性,来判断生物样本中是否存在共表达情况,以及共表达基因模块。除了基因集之间,其他方向,比如免疫细胞群体之间相关性,样本的相关性,也常常用相关性热图的形式进行展示。总而言之,往大了说,任何表征相关性的数值都可以用相关性热图来进行绘制。

    常规热图示例

    我们先来看看下面这张图,这是一篇发表在  PLoS Medicine  (IF = 11.048) 上的文章图,来看 22 种免疫细胞群体之间的相关性,其中红色的颜色代表正相关,蓝色代表负相关。每一格的数字代表相关系数。这是一种经常会用到的图形,不同于常规热图。常规热图中的每行代表一个观察值,每列代表一个样本,而我们在本次教程中,将为大家带来更高级,也更美观的相关性热图。

    相关性热图

    Step 1: R 包安装和数据输入

    首先是安装必须 R 包,在这里我们需要用到 ggcorplot 和 ggthemes 这两个R包。

    然后我们读入R表达谱数据。

    数据一共有 10 个样本和 20 个基因,每一行为一个基因,每一列为一个样本,我们需要看这 20 个基因在这 10 个样本中的共表达情况,也就是基因和基因之间的相关性。

    Step 2: 相关性计算

    为了表示基因与基因相关性,我们除了要计算它们的相关性系数,还需要计算体现其显著性的  P  值。

    计算相关性系数并显示前 6 个基因之间的相关性。相关性系数大于 0 为正相关,小于 0 为负相关。

    计算基因与基因之间的相关性  P  值,其中  P  小于 0.05 认为这两个基因之间相关性是显著的。

    Step 3: 相关性热图绘制

    使用 ggcorplot 绘制基因与基因之间相关性热图。

    Step 4: 初级美化 Circle

    美化第一步,我们将矩形热图改成圆形

    是不是大家瞬间觉得眼前一亮?

    Step 5: 中级美化 Clustering

    虽然有所美观,但是,这样上面一张相关性热图还是存在问题的,大家是否发现热图中的点非常乱,让人没办法捕捉到其中的规律,不容易让人一眼抓住重点。所以,我们要对基因进行聚类。

    这张热图,已经是非常漂亮了,放在文章中绝对让人眼睛一亮,正相关负相关基因清清楚楚。

    Step 6: 高级美化 Triangle

    当然,我们还可以进一步改善。因为相关性之间其实是有对称在的,左上角和右下角的图其实是一样的,这样绘制比较占版面。只绘制左上角的热图,可以让我们的图看起来没有那么臃肿。

    Step 7: 终级美化 Label

    那么如何显示相关性强弱呢,虽然颜色和点的大小可以看出来,但是毕竟没有那么直观。所以我们将相关性系数加上,并更改热图颜色。

    这样基因相关性热图就相当完美了,可以直接放在文章图中,而且比 PLoS Medicine 那篇文章看起来更漂亮呢。

    Step 8: 究级美化 Omit

    不过,如果我们想知道哪些基因显著性是小于 0.05 的呢,虽然颜色和点的大小以及相关性系数可以看出来,但是如果被老板们问起,模棱两可的回答,可是相当危险的哦。所以,我们把显著性p值加上,并且直接隐藏  P  小于 0.05 的基因。

    最新文章 更多
    最新素材 更多
    公司介绍 网站地图 图片资讯
    Copyright © 2010-2022 山东找图网络科技有限公司  鲁ICP备18007836号-3  邮箱:15653358549@163.com