我们已经服务了792位客户,下一个就是您

扫一扫,有惊喜!

首页>行业新闻> 一文详解如何用 R 语言绘制热图

一文详解如何用 R 语言绘制热图

来源:资讯由抓取专家从互联网收集整理时间:2017-06-16 17:42:32点击:1330

大数据

作者:taoyan

作为目前最常见的一种可视化手段,热图因其丰富的色彩变化和生动饱满的信息表达被广泛应用于各种大数据分析场景。同时,专用于大数据统计分析、绘图和可视化等场景的 R 语言,在可视化方面也提供了一系列功能强大、覆盖全面的函数库和工具包。因此,对相关从业者而言,用 R 语言绘制热图就成了一项最通用的必备技能。本文将以 R 语言为基础,详细介绍热图绘制中遇到的各种问题和注意事项。

简介

本文将绘制静态与交互式热图,需要使用到以下R包和函数:

  • heatmap():用于绘制简单热图的函数
  • heatmap.2():绘制增强热图的函数
  • d3heatmap:用于绘制交互式热图的R包
  • ComplexHeatmap:用于绘制、注释和排列复杂热图的R&bioconductor包(非常适用于基因组数据分析)

数据准备

使用R内置数据集 mtcars

使用基本函数绘制简单简单热图

主要是函数 heatmap(x, scale=”row”)

  • x: 数据矩阵
  • scale:表示不同方向,可选值有:row, columa, none
  • Default plotheatmap(df, scale = “none”)

大数据

大数据

大数据

增强热图

函数 heatmap.2()

在热图绘制方面提供许多扩展,此函数包装在 gplots 包里。

大数据

交互式热图绘制

d3heatmap 包可用于生成交互式热图绘制,可通过以下代码生成:

函数 d3heatmap() 用于创建交互式热图,有以下功能:

● 将鼠标放在感兴趣热图单元格上以查看行列名称及相应值

● 可选择区域进行缩放

k_row、k_col分别指定用于对行列中树形图分支进行着色所需组数。进一步信息可help(d3heatmap())获取。

使用 dendextend 包增强热图

软件包 dendextend 可以用于增强其他软件包的功能

大数据

大数据

绘制复杂热图

ComplexHeatmap 包是 bioconductor 包,用于绘制复杂热图,它提供了一个灵活的解决方案来安排和注释多个热图。它还允许可视化来自不同来源的不同数据之间的关联热图。可通过以下代码安装:

ComplexHeatmap 包的主要功能函数是 Heatmap(),格式为:Heatmap(matrix, col, name)

  • matrix:矩阵
  • col:颜色向量(离散色彩映射)或颜色映射函数(如果矩阵是连续数)
  • name:热图名称

大数据

使用调色板

大数据

热图及行列标题设置

大数据

注意,行标题的默认位置是“left”,列标题的默认是“top”。可以使用以下选项更改:

大数据

在上面的R代码中,fontface的可能值可以是整数或字符串:1 = plain,2 = bold,3 =斜体,4 =粗体斜体。如果是字符串,则有效值为:“plain”,“bold”,“italic”,“oblique”和“bold.italic”。

显示行/列名称:

  • show_row_names:是否显示行名称。默认值为TRUE
  • show_column_names:是否显示列名称。默认值为TRUE

大数据

更改聚类外观

默认情况下,行和列是包含在聚类里的。可以使用参数修改:

大数据

如果要更改列集群的高度或宽度,可以使用选项column_dend_height 和 row_dend_width:

大数据

我们还可以利用 color_branches() 自定义树状图外观

大数据

不同的聚类距离计算方式

参数 clustering_distance_rows 和 clustering_distance_columns

用于分别指定行和列聚类的度量标准,允许的值有“euclidean”, “maximum”, “manhattan”, “canberra”, “binary”, “minkowski”, “pearson”, “spearman”, “kendall”。

大数据

大数据

大数据

请注意,在上面的R代码中,通常为指定行聚类的度量的参数 clustering_distance_rows显示示例。建议对参数clustering_distance_columns(列聚类的度量标准)使用相同的度量标准。

大数据

聚类方法

参数clustering_method_rows和clustering_method_columns可用于指定进行层次聚类的方法。允许的值是hclust()函数支持的值,包括“ward.D”,“ward.D2”,“single”,“complete”,“average”。

大数据

热图拆分

有很多方法来拆分热图。一个解决方案是应用k-means使用参数km。

在执行k-means时使用set.seed()函数很重要,这样可以在稍后精确地再现结果

大数据

大数据

大数据

大数据

大数据

还可以将用户定义的树形图和分割相结合。在这种情况下,split可以指定为单个数字:

大数据

热图注释

利用HeatmapAnnotation()对行或列注释。格式为: HeatmapAnnotation(df, name, col, show_legend)

  • df:带有列名的data.frame
  • name:热图标注的名称
  • col:映射到df中列的颜色列表

大数据

大数据

大数据

大数据

复杂注释

将热图与一些基本图形结合起来进行注释,利用anno_point(),anno_barplot(),anno_boxplot(),anno_density() 和 anno_histogram()。

大数据

热图组合

大数据

可以使用选项width = unit(3,“cm”))来控制热图大小。注意,当组合多个热图时,第一个热图被视为主热图。剩余热图的一些设置根据主热图的设置自动调整。这些设置包括:删除行集群和标题,以及添加拆分等。

大数据

可以使用参数show_heatmap_legend = FALSE,show_annotation_legend = FALSE删除图例。

基因表达矩阵

在基因表达数据中,行代表基因,列是样品值。关于基因的更多信息可以在表达热图之后附加,例如基因长度和基因类型。

大数据

也可以可视化基因组变化和整合不同的分子水平(基因表达,DNA甲基化,…)

可视化矩阵中列的分布

使用函数densityHeatmap()。

大数据

End.

免责声明: 本公司网站中所出现的部分文章/图片/新闻/声音/视频等内容收集整理和转载自互联网或其他媒体,目的在于传递更多信息以及供参考使用或学习交流。涉及到的一切转载图文、影音版权及署名权归图文/影音原作者、整理者和首发媒体所有,同时所提供的所有作品版权归原作者所有,由于收集过程中几经转载,很多作品的原作者不详,如果本公司网站中使用了您的作品,请联系我们,我们会及时注明。如果您不愿本公司展示使用您的作品,请联系我们(QQ:7507777),我们会及时删除。

CopyRight © 2003 - 2018 All Right Reserved 版权所有:闽ICP备16009563号-5

闽公网安备 35020602000022号

在线咨询×
718229
2081337174
联系电话

18906040695