查看原文
其他

【孙老湿画图系列--第二弹】 热图 Heatmap

孙怀博 生信者言 2022-03-29

最近经常有人问 heatmap图怎么画?今天就在这里给大家介绍一下,在R中如何绘制heatmap图。

 

在样本不同物种丰度分析、或基因的表达模式分析中,我们往往需要对量化的多个物种或者基因表达数据进行可视化处理,这使得我们所关注的物种或者基因在不同处理下一目了然。在日常科研工作中,我们往往习惯于选择热图实现可视化的需求。

小板报

Heatmap图是将数值的大小以定义的颜色深浅表示出来,以此来直观的反映二维矩阵或表格中的数据信息。

常根据需要将数据进行物种或样品间丰度相似性聚类,将聚类后数据表示在heatmap 图上,可将高丰度和低丰度的物种分块聚集,通过颜色梯度及相似程度来反映多个样品在各分类水平上群落组成的相似性和差异性。


在R中实现heatmap的方式很多,最方便、最实用的两个软件包就是pheatmap和ComplexHeatmap。


今天主要给大家介绍pheatmap包(https://cran.r-project.org/web/packages/pheatmap/index.html)的使用。


pheatmap默认参数下是对行列均进行聚类(可设置cluster_row = FALSE, cluster_col = FALSE取消行和列的聚类),不进行标准化(标准化参数为scale,可选"none", "row", "column"),热图的每个小块之间以灰色隔开(参数border_color,如果不想要border可以设置为NA,当然也可以设置成其它颜色),legend显示在右上方(可设置legend = FALSE不显示legend)。也可以设置聚类的方法、字体大小(fontsize)、热图的颜色(color)等。

 

首先安装pheatmap,并载入该包:

install.packages("pheatmap")

library(pheatmap)

 

一个20行10列的数据,并赋值给变量test;

test = matrix(rnorm(200), 20, 10)

test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3

test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] +2

test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] +4

colnames(test) = paste("Test", 1:10, sep ="")

rownames(test) = paste("Gene", 1:20, sep ="")

 

实用heat()函数查看前6行:



绘图主函数pheatmap (),一般来说,使用默认参数即可,无需做其他参数修改

pheatmap(test)



有时候我们并不需要聚类,设置参数cluster_rows= FALSE, cluster_cols = FALSE

pheatmap(test, cluster_rows = FALSE,cluster_cols = FALSE)


 

有时候我们的样本有分组信息,或者基因属于不同的信号通路,我们可以用参数annotation_col和annotation_row注释,模拟一个分组信息:

annotation_col = data.frame(

                    CellType =factor(rep(c("CT1", "CT2"), 5)),

                    Time = 1:5)

rownames(annotation_col) = paste("Test", 1:10, sep ="")

 

annotation_row = data.frame(

                    GeneClass =factor(rep(c("Path1", "Path2", "Path3"), c(10, 4,6))))

rownames(annotation_row) = paste("Gene", 1:20, sep ="")

 

 

绘图:

pheatmap(test, annotation_col = annotation_col, annotation_row =  annotation_row)


 

有时候为了更好的展示,或者比较分析,需要做一个标准化,标准化参数为scale,可选"none", "row", "column"。如下所示,我们会按行进行标准化,并且修改颜色设置:

pheatmap(test, annotation_col =annotation_col, annotation_row = annotation_row, scale = "row", color =colorRampPalette(c("navy", "white","firebrick3"))(100)) 

 

  

以上就是pheatmap软件包的基础应用了,在实际科研工作中,大家会惊喜的发现,pheatmap的可用参数还有很多,完全支持根据自己的定制化需求进行调整或修改哦!

 

本期热图就分享到这里!本周三,散点图,孙老湿与你不见不散!


文字:孙怀博

编辑:Anymore


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存