heatmap一词相信大家肯定不会陌生,在很多重量级科学论文中非常常见。使用heatmap可以容易展示多组分之间关系或相关性,也能展示基因表达前后差异。heatmap其实还蕴含不少分析的秘诀,这么高大上的heatmap是怎样实现的呢?下面小编为大家一一揭晓。 文章篇幅较长,建议先码后看 下面小编将从这几方面讲解: 一、热图的基本概念 热图Heatmap,也叫热力图,可以用颜色变化来反映二维矩阵或表格中的数据信息,可以直观地将数据值的大小以定义的颜色深浅表示出来。热图使复杂的数据可视化和一目了然。通常根据需要将数据进行物种或样品间丰度相似性聚类,将聚类后数据表示在热图上,可将高丰度和低丰度的物种分块聚集,通过颜色梯度及相似程度来反映多个样品在各分类水平上群落组成的相似性和差异性。结果可有彩虹色和黑红色两种选择。 热图有两类:集群热图(clusterheatmap)和空间热图(spatialheatmap)。在集群热图里,图片大小固定在单元格里,制定成一个包含行和列的矩阵。单元格大小是可任意调节。而在空间热图里,在一个空间里大小和位置都固定好的。 热图的生成原理可以这样概括,先为离散点设定一个半径,创建一个缓冲区;再对每个离散点的缓冲区,使用渐进的灰度带(完整的灰度带是0-),从内至外、从浅至深填充;因为灰度值可以叠加,数值越大则颜色越深,在灰度带中显得越白。实际上可选择ARGB模型中任一通道作为叠加灰度值,从而对于有缓冲区交叉的区域,可叠加灰度值,因而缓冲区交叉的越多,灰度值越大,这块区域越“热”。最后,用叠加后的灰度值为索引,从一条有色的色带中映射颜色,并对颜色重新着色,从而实现热图。 灰度带 彩色带 二、热图的历史 热图其实并不是一种新的概念,可以追溯到19世纪。热图起源于数据矩阵中二维数值的显示。较大的数值用较小的深灰色或黑色方块(像素)表示。在年Lona就使用了阴影矩阵将巴黎各区的社会上统计数据实现了可视化。在年Sneath展示了聚类分析的结果,通过对矩阵的行和列进行置换,根据聚类将相似数值放置在彼此的附近。之后JacquesBertin使用了类似方法显示出符合格特曼尺度的数据,他将集群树连接到数据矩阵的行和列,这一想法来自于年RobertLing。RobertLing使用了打印机的字符来表示不同灰度,即一个像素就有一个字符宽度。在年LelandWilkinson开发了第一个计算机程序(SYSTAT),用于制作高分辨率彩色图形的集群热图。在年,软件设计师CormacKinney注册了“heatmap”商标,发明了一种用2D图形显示实时金融市场信息的工具。如今,热图仍然可以手工形式、Excel电子表格或使用像Hotjar这样的专业软件创建。 三、热图的类型 热图大致上可分为四种类型: 生物学热图,通常用在分子生物学范畴,可以显示从DNA微阵列获得的大量可比较样本(不同状态下的细胞、不同患者的样本)中的很多基因的表达水平。 树形图,是数据的2D分层分区,在视觉上类似于热图。 马赛克图,是一种平铺热图,用于表示双向或更高方式的数据表,与树形图一样,镶嵌在图中的矩形区域是分层组成。意味着这些区域是矩形。 密度函数可视化图,用来表示出图中点密度的热图,使人们能够独立在变焦参数感知点的密度。在年Perrot等人提出的一种方法,通过使用Spark和Hadoop等大数据基础设备,利用密度函数可看到几十亿个点。 四、热图在各个领域内的用途 热图通过众多数据点信息,汇聚成直观可视化颜色效果,至今热图被广泛应用在不同领域和范畴,比如气象预报、医疗成像、机房温度等,甚至应用于竞技体育领域的数据分析。 一场世界杯足球竞赛——评委们通常利用热图了解到冠军队伍中门将、后卫、中场和前锋的跑位,让我们一目了然地看到多名球员在比赛中跑位的差异。 天气、地震预测——气象局还可利用热图判断地震震源位置,可清楚看出哪些地方是地震高发区(频率最高)。 经济学上——结合百度地图和热图,就可利用热图看到金融商圈,将商家的坐标采集下来,根据坐标点进行聚类。看下面这张图,红色表示商家较多的地方,我们就可知道哪些是金融商圈。 那么,在生物学领域上热图提供什么用处呢? 在生物学上,尤其是分子生物学和生物信息学领域,热图经常用于展示多个基因在不同样本的表达水平,通过聚类等方式查看实验组和对照组特有的方式。 如上图所示,每一列代表一个样本,每一行代表一个基因,颜色代表表达量(这张图的图例看出,颜色越偏红色,数值越大,基因表达量越高)。 热图还可用于展示其他物质的丰度,如某细菌的相对丰度、代谢组不同物质的含量。当然热图还有一个重要的用处是展现出不同指标、不同样本等之间的相关性。 以上这图就是相关性热图,颜色深浅代表着相关系数的大小,越接近白色说明相关性越弱,偏蓝(负相关)或偏红(正相关),颜色越浅说明相关性越弱。 在相关性计算中除了相关系数外,我们还看到p值是否显著。如果把P值表示出来,可以在方格内加入*号或具体数值。但是由于我们在上图看到不同的两个指标之间的关系是被重复展现2次,所以有时候我们只需展现一半(对角线以上或以下)的一半图形就够了。就像下图所示: 五、热图的可视化方式 为什么要进行数据可视化呢?相对于文字说明,将文字进行可视化可让大脑能同时处理更多的数据。而且,可视化能使传递的信息更清晰。当我们进行数据可视化的时候,我们可以看到一些用文字无法看到的信息。如果只用文字表示,我们只能看到一大堆冷冰冰的数字,很难找到当中的规律。如果善用数据图就发现出这对数据的变化趋势。 热图在生信分析中可实现可视化数据。我们当然用R包了,R包默认了heatmap函数。R包也有很多具备heatmap功能的包,比如ggplot函数、pheatmap、ComplexHeatmap包、heatmap.plus包把数据实现出来。绘制热图的软件或方法有很多,如Excel、R语言、html、Python、MATLAB等。 R语言是一种为统计计算和图形显示而设计的脚本语言。它提供了线性和非线性模型、统计检验、时间序列分析、分类与聚类等功能,以数组和矩阵操作运算符为主。同时,R也是一个开发新的交互式数据分析方法的工具。它的开发周期短,而且有大量的扩展包可使用。目前利用R语言开发的生信软件已得到了广泛认可。 heatmap():用于绘制简单热图的函数 heatmap.2():绘制增强热图的函数 ComplexHeatmap:用于绘制、注释和排列复杂热图的Rbioconductor包(非常适用于基因组数据分析) heatmap.2函数和我们之前要求的数据类型不太一样,这个函数输入数据要求是矩阵。 data(mtcars)x-mtcarsy-as.matrix(mtcars) 在RStudio中我们可以清楚的看到x和y的区别,x的type是dataframe的格式,而y是matrix也就是矩阵格式。这两种数据类型有什么差别呢?matrix中的值只能是一个格式,比如都是字符型。而dataframe可以同时支持不同的类型比如数值型和字符型。 在开始作图之前,首先得安装好R包。此R包可在Win10、MacOSX、Linux操作系统上运行。 |