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

聚类热图绘制工具-R 数据可视化 ―― 聚类热图 pheatmap

原创:找图网 2023-04-19 09:52:19
  • 珍藏 史上最全热图绘制工具及操作流程(一)

  • heat map(热图)一词相信大家肯定不会陌生,在很多重量级科学论文中非常常见。使用heat map可以容易展示多组分之间关系或相关性,也能展示基因表达前后差异。heat map其实还蕴含不少分析的秘诀,这么高大上的heat map是怎样实现的呢?

    热图的应用性很广,在介绍热图绘制工具之前,我先给大家科普科普,讲讲有关热图的基本概念、历史、用途。

    Heat map 的基本概念

    Heatmap是热图,也叫热力图,可以用颜色变化来反映二维矩阵或表格中的数据信息,可以直观地将数据值的大小以定义的颜色深浅表示出来。热图使复杂的数据可视化和一目了然。通常根据需要将数据进行物种或样品间丰度相似性聚类,将聚类后数据表示在热图上,可将高丰度和低丰度的物种分块聚集,通过颜色梯度及相似程度来反映多个样品在各分类水平上群落组成的相似性和差异性。结果可有彩虹色和黑红色两种选择。

    热图有两类:集群热图(cluster heat map)和空间热图(spatial heat map)。在集群热图里,图片大小固定在单元格里,制定成一个包含行和列的矩阵。单元格大小是可任意调节。而在空间热图里,在一个空间里大小和位置都固定好的。

    Heatmap的生成原理可以这样概括,先为离散点设定一个半径,创建一个缓冲区;再对每个离散点的缓冲区,使用渐进的灰度带(完整的灰度带是0-255),从内至外、从浅至深填充;因为灰度值可以叠加,数值越大则颜色越深,在灰度带中显得越白。实际上可选择ARGB模型中任一通道作为叠加灰度值,从而对于有缓冲区交叉的区域,可叠加灰度值,因而缓冲区交叉的越多,灰度值越大,这块区域越“热”。最后,用叠加后的灰度值为索引,从一条有256色的色带中映射颜色,并对颜色重新着色,从而实现热图。

    灰度带

    彩色带

    热图的历史

    热图其实并不是一种新的概念,可以追溯到19世纪。

    热图起源于数据矩阵中二维数值的显示。较大的数值用较小的深灰色或黑色方块(像素)表示。在1873年Lona就使用了阴影矩阵将巴黎各区的社会上统计数据实现了可视化。在1957年Sneath展示了聚类分析的结果,通过对矩阵的行和列进行置换,根据聚类将相似数值放置在彼此的附近。之后Jacques Bertin使用了类似方法显示出符合格特曼尺度的数据,他将集群树连接到数据矩阵的行和列,这一想法来自于1973年Robert Ling。Robert Ling使用了打印机的字符来表示不同灰度,即一个像素就有一个字符宽度。在1994年Leland Wilkinson开发了第一个计算机程序(SYSTAT),用于制作高分辨率彩色图形的集群热图。在1991年,软件设计师Cormac Kinney注册了“heatmap”商标,发明了一种用2D图形显示实时金融市场信息的工具。如今,热图仍然可以手工形式、Excel电子表格或使用像Hotjar这样的专业软件创建。

    热图的4种类型

    第一种,生物学热图,通常用在分子生物学范畴,可以显示从DNA微阵列获得的大量可比较样本(不同状态下的细胞、不同患者的样本)中的很多基因的表达水平。

    第二种,树形图,是数据的2D分层分区,在视觉上类似于热图。

    第三种,马赛克图,是一种平铺热图,用于表示双向或更高方式的数据表,与树形图一样,镶嵌在图中的矩形区域是分层组成。意味着这些区域是矩形。

    第四种,密度函数可视化图,用来表示出图中点密度的热图,使人们能够独立在变焦参数感知点的密度。在2015年Perrot等人提出的一种方法,通过使用Spark和Hadoop等大数据基础设备,利用密度函数可看到几十亿个点。

    热图在各个领域内的用途

    热图通过众多数据点信息,汇聚成直观可视化颜色效果,至今热图被广泛应用在不同领域和范畴,比如气象预报、医疗成像、机房温度等,甚至应用于竞技体育领域的数据分析。

    观看一场世界杯足球竞赛时,评委们通常利用热图了解到champion队伍中门将、后卫、中场和前锋的跑位,让我们一目了然地看到多名球员在比赛中跑位的差异。

    气象局还可利用热图判断地震震源位置,可清楚看出哪些地方是地震高发区(频率最高)。

    还可结合百度地图和热图,就可利用热图看到金融商圈,将商家的坐标采集下来,根据坐标点进行聚类。看下面这张图,红色表示商家较多的地方,我们就可知道哪些是金融商圈。

    那么,在 生物学 领域上热图提供什么用处呢?

    热图经常用于 展示多个基因在不同样本的表达水平 ,然后通过聚类等方式查看实验组和对照组特有的方式。

    如上图所示,每一列代表一个样本,每一行代表一个基因,颜色代表表达量(这张图的图例看出,颜色越偏红色,数值越大,基因表达量越高)。

    热图还可用于 展示其他物质的丰度 ,如某细菌的相对丰度、代谢组不同物质的含量。当然热图还有一个重要的用处是展现出不同指标、不同样本等之间的相关性。

    以上这图就是相关性热图,颜色深浅代表着相关系数的大小,越接近白色说明相关性越弱,偏蓝(负相关)或偏红(正相关),颜色越浅说明相关性越弱。在相关性计算中除了相关系数外,我们还看到p值是否显著。如果把P值表示出来,可以在方格内加入*号或具体数值。但是由于我们在上图看到不同的两个指标之间的关系是被重复展现2次,所以有时候我们只需展现一半(对角线以上或以下)的一半图形就够了。就像下图所示:

    好了,这篇就讲到这里,下一篇将为你揭晓更多有关热图的奥秘。

  • R 数据可视化 ―― 聚类热图 pheatmap

  • 在前面的章节中,我们介绍了如何使用 ggplot2 绘制热图

    ggplot2 绘制热图的方式很多,如 geom_raster 、 geom_tile 等

    但通常仅仅绘制热图是不够的,还需要对数据进行聚类,即绘制聚类热图。

    例如,最常用的就是将差异基因的表达值绘制聚类热图,来查看基因在不同样本中的表达差异情况,或者比较不同聚类分组之间的差异。

    绘制聚类热图的包有很多,我们主要介绍 pheatmap 和 ComplexHeatmap

    假设我们有如下数据

    要绘制简单的热图,可以使用内置的 heatmap 函数

    更改颜色,并为列添加列样本的分类颜色条

    内置函数提供的样式较少,无法对某些图形属性进行设置。

    所以下面我们使用 pheatmap 包来绘制热图

    pheatmap 对图形属性提供了更精细的控制

    这样看起来怪怪的,应该是基因的表达量差异,所以对行进行标准化

    嗯,一下子就顺眼多了,实验组和对照组的基因表达量差别明显

    默认情况下,会对数据的行列分别进行层次聚类,如果我们想在进行层次聚类之前,先对行特征,也就是基因进行 k-means 聚类,我们可以

    先将基因聚为 3 类,再进行层次聚类

    如果只想对其中行列中的一个进行聚类,可以使用 cluster_rows 和 cluster_cols 参数,取消对行或列的距离

    默认的距离度量为欧氏距离,也可以分别为行列指定不同的距离度量,例如

    也可以使用 clustering_method 参数来指定不同的聚类方法,支持以下几种方法:

    图例的设置很简单,即通过 legend_breaks 参数设置断点, legend_labels 参数设置断点处的标签

    如果不想显示图例,直接设置 legend = F 就行

    设置边框颜色

    删除边框

    默认情况下,单元格的长度和宽度会根据图片的大小自动调整,如果想固定单元格的大小,可以使用 cellwidth 和 cellheight 两个参数

    如果我们想在单元格中显示对于的数值,可以设置 display_numbers = TRUE

    对显示的数值进行格式化

    或者,为 display_numbers 参数传递一个矩阵

    例如,根据表达值是否大于 100 来显示不同的标记

    在不对数据进行聚类的情况下,可以对行列进行自定义划分为不同的块

    或者只对行或列进行分块

    总之,只能对未聚类的行或列进行分块

    或者,根据层次聚类的结果,对数据进行分块

    使用 main 参数来设置图像的标题

    可以使用 show_colnames 和 show_rownames 不显示标签

    分别设置标签的大小,同时设置列标签的倾斜角度,可选的角度有 270、0、45、90、315

    也可以使用 fontsize 参数统一行列标签的大小

    也可以自定义行列标签

    我们可以分别为行和列构建分组信息,例如对于行是基因,可以将其分为癌基因和抑癌基因等,而列为样本可以分为癌症和配对正常样本,同时样本对应的患者应该会有年龄性别等信息

    例如

    我们可以将这些信息以颜色条的方式添加到图中

    隐藏图例

    我们可以回去 pheatmap 函数返回的对象的信息

    可以看到,返回对象 p 中包含 4 个变量,我们可以根据 tree_row 和 tree_col 提取出对应的行列顺序

    提取这些信息有助于我们对数据进行分组,用于后续分析

    参数列表

    数据:

  • ARGs热图怎么画

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

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

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

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