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

热图怎么画-complexheatmap绘制热图

原创:找图网 2023-04-19 15:29:43
  • 热图绘制

  • 公众号链接:

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

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

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

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

    注意:运算符的优先级。

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

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

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

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

    X

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

    数字开头

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

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

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

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

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

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

    设置想要的颜色。

    调整legend的位置。

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

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

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

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

  • ARGs热图怎么画

  • 先通过K均值聚类算法,把这些基因聚成30类来画热图。

    绘制热图,最常用的是R语言,当然也能用GraphPad Prism做。但如果数据量不是特别大的话,这里推荐一个在线工具ClustVis,但数据量大时还是容易卡顿。不同基因在不同样本中的表达量,可能会跨越好几个数量级,这样就会把色键分得很细,所以通常会对表达量取对数,或取Z-score,这样色键的范围一般就在个位数内变化。

    另一个不太卡的在线工具叫Morpheus,博大研究所开发的。还有桌面软件HemI,华中科技大学开发的。

  • complexheatmap绘制热图

  • 通过 Heatmap 我们就可以形成单个热图。

    PS: colorRamp2 默认的使用的配色方案是 LAB 的。如果想使用RGB的则可以通过其中的space参数进行修改。

    *1、 即使出现了异常值,在制定的颜色当中,异常值也只是显示最大值而不是说是把整体的颜色分布给破坏了。我们可以比较一下pheatmap和Heatmap的结果

    如果数据当中含有缺失值,如果我们不想去掉想要可视化的话,可以通过na_col来指定颜色

    通过上图,我们可以使用对热图的四周都可以进行标题注释。

    无监督的聚类属于热图的可视化的一个重要组成部分。

    分类聚类只要包括两步:计算距离矩阵以及应用聚类。一般来说计算距离的方式包括pearson, spearman以及kendall。这个计算方式是通过1 - - cor(x, y, method)来实现的。在函数当中则是通过 clustering_distance_rows/columns 来进行实现的。

    *2、 cluster_rows 分开设置不同的颜色

    我们可以通过 column/row_dend_reorder 来对聚类的结果进行重新排序

    一般情况下,热图当中各个观测值的顺序是基于聚类的分组来进行排列的。有时候我们想要自己排序顺序。这个时候就可以自定义去顺序。通过row_order/column_order可以来定义其排序。 PS:当我们自定义顺序之后,聚类的顺序就随之关闭了。

    默认情况下对于列名和行名都是显示的。我们可以对其进行自定义

    热图的分割主要包括多种方式

    一般的热图上都是方块形的颜色的变化。我们可以通过cell_fun参数来对热图本身进行自定义。这个参数本质是一个for循环的函数。这个接受7个参数分别是: - j矩阵当中行的索引。 - i矩阵当中的列的索引。 - x在热图当中测量点的X坐标 - y在热图当中测量点单元格Y的坐标 - width 单元格的宽度。默认值是unit(1/nrow(sub_mat), "npc") - height单元格的高度。默认值是unit(1/nrow(sub_mat), "npc") - fill单元格的颜色。 通过一个简单的例子我们来详细说一下具体的含义

    上述两个热图的区别就在于增加了一个cell_fun参数。通过比较两个热图可以明白cell_fun本质上就是给单元格自定义。这个例子当中,通过自定义函数,我们取small_mat1的数据放到热图上。放的位置及基于i,j,x,y来决定的。这个例子当中四个参数都没有变化。所以默认热图的数据集和自定义的数据集和变化是一样的。即:在small_data[1,1]的位置放置small_data1[1,1]的内容。以此类推。

    由于是函数嘛,所以可以更加的自定义数据了。比如加入if来筛选数据

    同样的由于自定义绘图也是基于grid系统的。所以grid系统另外一些绘图参数也是可以使用的。所以我们可以隐藏默认的热图显示来定义不同的图形。

    我们可以通过width和height来调整整体图片的大小。通过heatmap_width以及heatmap_height来调整热图部分的大小。

    生活很好,等你超越

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