技术贴 | R语言pheatmap聚类分析和热图
本文由阿童木根据实践经验而整理,希望对大家有帮助。
原创微文,欢迎转发转载。
pheatmap默认会对输入矩阵数据的行和列同时进行聚类,但是也可以通过布尔型参数cluster_rows和cluster_cols设置是否对行或列进行聚类,具体看分析需求。利用display_numbers参数可以在热图中的每个cell中填入想要的信息,例如相对丰度信息。利用cutree_rows和cutree_cols参数可以根据聚类产生的tree信息对热图进行分割。本文将先模拟输入矩阵数据,然后再展示这些参数的具体使用方法。
一、模拟输入矩阵
set.seed(1995)
# 随机种子
data=matrix(abs(round(rnorm(200, mean=1000, sd=500))), 20, 10)
# 随机正整数,20行,20列
colnames(data)=paste("Species", 1:10, sep=".")
# 列名-细菌
rownames(data)=paste("Sample", 1:20, sep=".")
# 行名-样品
data_norm=data
for(i in 1:20){
sample_sum=apply(data, 1, sum)
for(j in 1:10){
data_norm[i,j]=data[i,j]/sample_sum[i]
}
}
# 标准化
data_norm
# 模拟完成的标准化矩阵数据如下:
二、聚类分析和热图
1. 画热图
library(pheatmap)
# 加载pheatmap包
pheatmap(data_norm)
# 绘制热图,结果如下:
2. 在cell中添加丰度
方法:
display_numbers=TRUE:使用默认矩阵数据。
pheatmap(data_norm, display_numbers=TRUE)
# 绘制热图,结果如下:
3. 根据tree将热图分割成2行3列
方法:
cutree_rows=num:分割行
cutree_cols=num:分割列
pheatmap(data_norm, cutree_rows=2, cutree_cols=3)
# 绘制热图,结果如下: