5分钟学会绘制热图pheatmap

热图在个组学中的应用十分的广泛,在文献中经常出现,利用颜色直接展示在不同样本中展示基因、代谢物、物种等表达的水平。一张热图像五颜六色的瓷砖一样铺在整张图中,给人视觉上的美感。通过R做heatmap是常用的方法,那我们今天就来学习一下怎样快速绘制热图吧~

安装并加载pheatmap包

#安装pheatmap包

install.packages(“pheatmap”)

#加载

library(pheatmap)

#设置工作路径

setwd(“/Users/sansan/Desktop/未命名文件夹/”)

构建测试数据集

#首先构建一个数据集,作为我们学习的示例

test <- matrix(rnorm(100),10,10)

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

test[5:10,seq(1,10,2)] <- test[5:10,seq(1,10,2)]+3

colnames(test) <- paste(“Sample”,1:10,sep = “”)

rownames(test) <- paste(“Gene”,1:10,sep = “”)

test

截屏2023-06-08 13.34.30

绘制简单的热图

归一化处理的必要性:是一种数据预处理中特征缩放的(feature scaling)的方法,可以让所有的数据处于一种量纲级别进行分析,更容易直观的阐明数据的差异性。例如归一化到【1,-1】的范围内,消除了异常样本导致结果不良的影响。

在应用前,首先需要了解一些必要的参数。

#scalec = “row” 参数设定对行进行归一化处理

# clustering_method参数设定不同聚类方法,默认为”complete”,可以设定为ward, ward.D, ward.D2, single, complete, average, mcquitty, median or centroid

# clustering_distance_rows = “correlation”参数设定行聚类距离方法为corralation,默认为欧氏距离”euclidean”

# legend_breaks参数设定图例显示范围,legend_labels参数添加图例标签legend_labels = c(“1.0″,”2.0″,”3.0″,”4.0″,”5.0”)

#border=FALSE参数去掉边框线

#border_color参数设定每个热图格子的边框色

#show_rownames和show_colnames参数设定是否显示行名和列名

#treeheight_row和treeheight_col参数设定行和列聚类树的高度,默认为50

#display_numbers = TRUE参数设定在每个热图格子中显示相应的数值

#number_color参数设置数值字体的颜色

# cellwidth和cellheight参数设定每个热图格子的宽度和高度,main参数添加主标题

了解后来简单绘制一个尝试一下:

pheatmap(test,scale = “row”,clustering_method = “average”,clustering_distance_rows = “correlation”,border=FALSE,treeheight_row = 50,treeheight_col =50,cellwidt = 15,cellheight = 20)

这里用到的参数,如果你不明白意义记得去上文中寻找。

截屏2023-06-09 11.49.27

添加行信息/列信息(用于代谢通路分析等)

在分析过程中通常会在行或者列添加一行属于

#先构建一个行的信息(用于一些代谢通路富集分析)

annotation_row <- data.frame(Path = factor(rep(c(“one”,”two”),5)))

rownames(annotation_row) <- paste(“Gene”,1:10,sep = “”)

# Path

#Gene1 one

#Gene2 two

#Gene3 one

#Gene4 two

#Gene5 one

#Gene6 two

#Gene7 one

#Gene8 two

#Gene9 one

#Gene10 two

pheatmap(test, annotation_row = annotation_row)

#创建一个行的色块

ann_col = list(Path = c(one = “red”,two = “yellow”))

#把色块映射到图上

pheatmap(test, annotation_row = annotation_row, annotation_colors = ann_col)

其它一些操作

# gaps_row = c(3, 5)参数在第3和5行处添加gap, 要求对行不进行聚类

#cutree_col = 2参数将列按聚类树的结果分成两部分, 要求对列进行聚类

#对行和列都不聚类,自定义划分行和列的gap

#labels_row 参数设置行标签

pheatmap(test, annotation_col = annotation_col, cluster_rows = FALSE, cluster_cols = FALSE, gaps_row = c(3,6), gaps_col = c(2, 5),labels_row = c())

在做图的过程中我们应该充分考虑你想展示的内容是什么,要传达怎样的生物学内容,告诉读者你的研究结果,而不是一味的只追求好看。在作图的过程中你需要什么就去搜索和探索什么,这里只是简单的热图绘制方法,但是具体怎样呈现还需要进一步的学习。

此外还可以寻找很多小工具绘制热图例如:http://www.biocloudservice.com/747/747.php

今天的分享就到这里叭,小伙伴们如果有什么问题就和小果讨论吧~