vlambda博客
学习文章列表

一起来学习如何使用R语言绘制热图


热图(heatmap)是除火山图外另一可视化差异基因的工具,本文将向大家展示如何用R语言来实现热图的绘制一起来学习如何使用R语言绘制热图


在上一篇推文中,我们学习了如何绘制,最后定义的一个一键绘图函数功能是不是很强大一起来学习如何使用R语言绘制热图,这次我们就一起来看看如何用R语言绘制热图吧一起来学习如何使用R语言绘制热图

一起来学习如何使用R语言绘制热图

在R语言中绘制热图的方法有很多,pheatmap包是我的最爱,本次我也就以用pheatmap包绘制热图的方法来举例了。好,废话不多说,我们这就开始吧一起来学习如何使用R语言绘制热图一起来学习如何使用R语言绘制热图一起来学习如何使用R语言绘制热图

一起来学习如何使用R语言绘制热图

首先准备数据,这次需要准备三个数据。第一个是包含每个基因表达变化情况的数据框(如下图所示)

一起来学习如何使用R语言绘制热图

(此为数据集GSE118370经limma包分析结果:Tumor vs. Normal,命名为DEG)

因为我们在热图中需要显示每个基因在不同样本中的表达情况,所以需要准备的第二个数据是注释好基因名称的基因表达矩阵,里面包含每个样本所有基因的表达值信息(如下图所示)。

一起来学习如何使用R语言绘制热图

我们要准备的第三个数据是一个包含样本分组信息的数据框,以便在热图中显示样本的分组信息(如下图所示)。

一起来学习如何使用R语言绘制热图

接下来同样是定义一下上下调基因:以logFC>1且adj.P.Val<0.05为显著上调基因,logFC<-1且adj.P.Val<0.05为显著下调基因,其余为表达变化不显著的基因,并在DEG中新增一列,命名为Change,并删去标记为“NOT”(差异变化不显著)的基因。

##给DEG添加一列,标注上下调情况,并删去表达变化不显著的基因
DEG$Change <- as.factor(ifelse(DEG$adj.P.Val < 0.05 & abs(DEG$logFC) > 1,
ifelse(DEG$logFC > 1, 'Up', 'Down'),'NOT'))

DEG <- DEG[DEG$Change != 'NOT',] #筛选差异表达基因

DEG <- DEG[order(abs(DEG$logFC), decreasing = T), ] #按logFC绝对值从大到小排序
一起来学习如何使用R语言绘制热图

然后就可以开始绘图啦:

library(pheatmap)  #加载pheatmap包
pheatmap(mat = ExprMatrix[rownames(DEG),])
##ExprMatrix为我们准备的第二个数据

一起来学习如何使用R语言绘制热图

这张图看上去比较丑,所以我们需要对其进行一些调整:

pheatmap(mat = ExprMatrix[rownames(DEG),], #这里也可以选取其中的一部分基因进行绘图
annotation_col = sample_group, #sample_group为我们准备的第三个数据
scale = 'row', #按行进行标准化,使颜色区分更加明显
show_rownames = F) #取消显示行名

一起来学习如何使用R语言绘制热图这样是不是就好看多了。此外,如果我们选取少量基因绘图时,还可以在图中显示每个基因的表达值(设置display_numbers参数为TRUE),这样看上去更为方便!

pheatmap(mat = ExprMatrix[rownames(DEG),][1:20,], #选取logFC排名前20的基因
annotation_col = sample_group,
scale = 'row',
show_rownames = T,
display_numbers = T)

一起来学习如何使用R语言绘制热图

pheatmap函数提供了大量可调整参数,如果想调整更多细节,可以查看帮助文档!本次内容比较简单,就到此结束啦一起来学习如何使用R语言绘制热图

(如发现代码有错误之处或不足,欢迎指正!)

END