点击蓝字↑↑↑“微生态”,轻松关注不迷路
本文由阿童木根据实践经验而整理,希望对大家有帮助。
原创微文,欢迎转发转载。
导读上一篇讲到利用display_numbers参数可以在热图中的每个cell中填入想要的信息,例如相对丰度信息,另外也可以利用此参数给每个cell添加标记(mark)信息。另外利用annotation_col和annotation_row参数可以给pheatmap热图的横或列添加分组信息。本文将先模拟输入矩阵数据,然后再展示pheatmap添加标记和分组具体方法。
一、模拟输入矩阵
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. 在cell中添加mark
方法:
display_numbers=matrix:使用自定义矩阵数据
data_mark=data_norm
# 新建mark矩阵
for(i in 1:20){
for(j in 1:10){
data_mark[i,j]=ifelse(data_norm[i,j]>0.1, "*", "")
}
}
# 用"*"代替>0.1的相对丰度&#xff0c;用""代替<&#61;0.1的相对丰度
pheatmap(data_norm, display_numbers&#61;data_mark)
# 绘制热图&#xff0c;结果如下&#xff1a;
2. 给样品和物种添加分组信息
方法&#xff1a;
annotation_col&#xff1a;列分组
annotation_row&#xff1a;行分组
annotation_colors&#xff1a;分组颜色
Group&#61;c("A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B")
group_sample&#61;data.frame(Group)
rownames(group_sample)&#61;rownames(data_norm)
# 模拟样品分组文件
group_sample
# 查看&#xff1a;
Genus&#61;c("G1", "G1", "G1", "G1", "G1", "G2", "G2", "G2", "G2", "G2")
group_genus&#61;data.frame(Genus)
rownames(group_genus)&#61;colnames(data_norm)
# 模拟物种分组文件
group_genus
# 查看&#xff1a;
colors&#61;list(Group&#61;c(A&#61;"#1B9E77", B&#61;"#D95F02"))
# 自定义样品分组颜色&#xff0c;物种/Genus分组使用默认颜色
pheatmap(data_norm, annotation_col&#61;group_genus, annotation_row&#61;group_sample, annotation_colors&#61;colors)
# 绘制热图&#xff0c;结果如下&#xff1a;
感谢阅读~
你可能还喜欢
1 技术贴 | 16S专题 | 简单介绍如何用自己的笔记本处理高通量16S数据
2 技术贴 | 宏基因组专题 | 组装工具盘点和比较
3 技术贴 | R语言菌群Alpha多样性分析和绘图
4 技术贴 | 宏转录组专题 | DDBJ数据库&#xff1a;宏转录组测序数据下载
5 技术贴 | R语言pheatmap聚类分析和热图
微生态科研学术群期待与您交流更多微生态科研问题
(联系微生态老师即可申请入群)
了解更多菌群知识&#xff0c;请关注“微生态”。