dxy logo
首页丁香园病例库全部版块
搜索
登录

实用干货 | 代谢组学中层次聚类热图的R语言实现-pheatmap( )函数

发布于 2021-12-09 · 浏览 1012 · IP 上海上海
这个帖子发布于 3 年零 154 天前,其中的信息可能已发生改变或有所发展。
icon墨点星沟 +5丁当

在代谢组学的数据分析中,通常根据代谢物的含量进行层次聚类分析,以反映各个样本之间代谢物含量的差异。


常用的数据分析工具中,R语言中的程序包可以灵活绘制出非常美观的层次聚类热图形。本文将利用R语言中的pheatmap包对绘制层次聚类热图进行详细的介绍(详细参数见文末彩蛋!)。


一、pheatmap( )函数常用参数简介

pheatmap(mat, # 热图的输入数据,数据类型为数值型data.frame或matrix

color = colorRampPalette(rev(brewer.pal(n = 7, name = "RdYlBu")))(100), # 热图颜色设置

cellwidth = NA, # 设置热图单元格的宽度

cellheight = NA, # 设置热图单元格的高度

treeheight_row = ifelse((class(cluster_rows) == "hclust") || cluster_rows, 50, 0), # 设置行聚类树的高度

treeheight_col = ifelse((class(cluster_cols) == "hclust") || cluster_cols, 50, 0), # 设置列聚类树的高度

cluster_rows = TRUE, # 是否对行进行聚类

cluster_cols = TRUE, # 是否对列进行聚类

cutree_rows = NA, # 设置将行聚类的结果分割成多少个集群,分割依据时基于层次聚类结果,如果未对行进行聚类,则该参数被直接忽略

cutree_cols = NA, # 设置将列聚类的结果分割成多少个集群,分割依据时基于层次聚类结果

annotation_row = NA, # 在热图左侧添加注释,可用于显示代谢物的分类信息,数据为data.frame格式

annotation_col = NA, # 在热图顶部添加注释,可用于显示分组信息,数据为data.frame类型

border_color = "grey60", # 热图内部单元格的边界颜色,可设置为NA无边界

display_numbers = F, # 是否在热图单元格中显示相应的数值

fontsize = 10, # 基础字体大小设置

fontsize_row = fontsize, # 行名字体大小设置

fontsize_col = fontsize, # 列名字体大小设置

filename = NA, # 保存热图的全文件路径,包含路径和输出的热图文件名(当设置了filename时,图形显示器将不再显示热图

…)

二、pheatmap( )函数绘制热图实战

 第一步:安装所需的R包及原始数据导入

install.packages("openxlsx") # 导入excel数据所需的R包

install.packages("pheatmap") # 绘制热图所需的R包

library(openxlsx)

library(pheatmap)

data <- read.xlsx(‘E: /R_TEST.xlsx’) # 导入数据(案例中的数据非真实数据)

rownames(data) <- data[, 1] # 设置行名


img

第二步:基础热图-默认参数

pheatmap(data[, c(3:8)])

img

第三步:设置颜色

pheatmap(data[, c(3:8)], color = colorRampPalette(c('red', 'white', 'blue'))(100))  

# 其中('red', 'white', 'blue')和(100)可根据需求自行修改

img

第四步:设置单元格大小

pheatmap(data[, c(3:8)], cellwidth = 18, cellheight = 18)

img

第五步:设置聚类树的高度

pheatmap(data[, c(3:8)], treeheight_row = 100)  

# 设置行(代谢物)聚类树的高度

pheatmap(data[, c(3:8)], treeheight_col = 100)  

# 设置列(样本)聚类树的高度

img
img

第六步:取消聚类

pheatmap(data[, c(3:8)], cluster_rows = FALSE)  

# 取消行聚类

pheatmap(data[, c(3:8)], cluster_cols = FALSE)  

# 取消列聚类

img
img

第七步:依据聚类结果对热图进行分割

pheatmap(data[, c(3:8)], cluster_rows = TRUE, cluster_cols = FALSE, cutree_rows = 3) 

# cutree_rows = 3 是根据聚类结果进行的具体值设置

img

第八步:添加样本分组信息

annotation_col = data.frame(Group = factor(rep(c('A','B'), c(3,3))), row.names = colnames(data[, c(3:8)]))  

# 对每个样本设置相对于的分组,(A、B为组名,3为每个组的样本数)

注意:原始数据表中每个分组的样本放在一起,否则factor( )需一一对应样本名设置相对应的分组名。

pheatmap(data[, c(3:8)], cluster_rows = TRUE, cluster_cols = FALSE, cutree_rows = 3, annotation_col = annotation_col)

img

第九步:添加代谢物分类信息

annotation_row = data.frame(Class = data$Class, row.names = rownames(data))

pheatmap(data[, c(3:8)], cluster_rows = TRUE, cluster_cols = FALSE, cutree_rows = 3, annotation_col = annotation_col, annotation_row = annotation_row)

img

第十步:设置单元格边框颜色,默认颜色为灰色(grey30)

pheatmap(data[, c(3:8)], cluster_rows = TRUE, cluster_cols = FALSE, cutree_rows = 3, annotation_col = annotation_col, annotation_row = annotation_row, border_color = NA)

# border_color = NA 表示不设置单元格边框颜色

img

第十一步:单元格内显示数值

pheatmap(data[, c(3:8)], cluster_rows = TRUE, cluster_cols = FALSE, cutree_rows = 3, annotation_col = annotation_col, annotation_row = annotation_row, border_color = NA, display_numbers = T)

img

第十二步:设置字体大小

pheatmap(data[, c(3:8)], cluster_rows = TRUE, cluster_cols = FALSE, cutree_rows = 3, annotation_col = annotation_col, annotation_row = annotation_row, border_color = NA, display_numbers = T, fontsize = 11)

也可使用fontsize_row和fontsize_col分别对行标签和列标签进行字体大小设置。

pheatmap(data[, c(3:8)], cluster_rows = TRUE, cluster_cols = FALSE, cutree_rows = 3, annotation_col = annotation_col, annotation_row = annotation_row, border_color = NA, display_numbers = T, fontsize = 11, fontsize_row = 13, fontsize_col = 15)

img

第十三步:保存热图

pheatmap(data[, c(3:8)], cluster_rows = TRUE, cluster_cols = FALSE, cutree_rows = 3, annotation_col = annotation_col, annotation_row = annotation_row, border_color = NA, display_numbers = T, filename = 'E:/R_TEST.png')   

# filename为保存路径和文件名

注意:设置filename后,RStudio图形界面将不再显示出热图。


彩蛋:pheatmap( )函数的参数详解


网盘下载链接:

https://pan.baidu.com/s/1ao690Lpk2upH57_pu5AElw 

提取码:98e4

最后编辑于 2022-10-09 · 浏览 1012

回复7 2

全部讨论0

默认最新
avatar
分享帖子
share-weibo分享到微博
share-weibo分享到微信
认证
返回顶部