基于R做宏基因组的进化树ClusterTree分析

写在前面

同上一篇的PCoA分析,这个也是基于公司结果基础上的再次分析,重新挑选样本,在公司结果提供的csv结果表上进行删减,本地重新分析作图

步骤

表格预处理

  • 在公司给的ClusterTree的原始表格数据里选取要保留的样本,同样保存为逗号分隔的csv文件

代码演示

无色版

R 复制代码
install.packages('vegan')
install.packages('dendextend')
install.packages('circlize')

data <- read.table('F:\\Analysis\\RA_Sanhe cow\\Microgenome\\Cluster_Tree\\table.g10.cluster.csv', header=T, sep = ',', check.names=FALSE)
rownames(data)=data[,1]
data=data[,-1]
library(vegan)
data=decostand(data, MARGIN=2, "total")
otu=t(data)
otu_dist=vegdist(otu, method="bray", diag=TRUE, upper=TRUE, p=2)
#进行聚类分析并作图
hclust=hclust(otu_dist, method="average")
plot(hclust)

library(dendextend)
library(circlize)
tree=as.dendrogram(hclust)
par(mfrow=c(2,2), mar=c(3,3,1,5), cex=0.7)
plot(tree, horiz=TRUE, main="UPGMA Tree")
#隐藏平均距离小于0.5的对象(类群)
plot(cut(tree, h=0.5)$upper, horiz=TRUE, main="Samples with distance higher than 0.5")
#在上一步基础上筛选第二个分类簇
plot(cut(tree, h=0.5)$upper[[2]], horiz=TRUE, main="Second branch samples with distance higher than 0.5")
circlize_dendrogram(tree)

上色版

R 复制代码
##完整代码
data <- read.table('F:\\Analysis\\RA_Sanhe cow\\Microgenome\\Cluster_Tree\\Demo_ClusterTree.csv', header=T, sep = ',', check.names=FALSE)
rownames(data)=data[,1]
data=data[,-1]
library(vegan)
data=decostand(data, MARGIN=2, "total")
otu=t(data)
otu_dist=vegdist(otu, method="bray", diag=TRUE, upper=TRUE, p=2)
#进行聚类分析并作图
hclust=hclust(otu_dist, method="average")
library(dendextend)
library(RColorBrewer)
hcd=as.dendrogram(hclust)
labelColors=brewer.pal(n=4, name="Set1")
#聚类分组,预设聚类簇数目为4
clusMember=cutree(hcd, 4)
#自定义函数,根据聚类结果进行着色,4 种颜色
colLab=function(n) {
  if (is.leaf(n)) {
    a=attributes(n)
    labCol=labelColors[clusMember[which(names(clusMember)==a$label)]]
    attr(n, "nodePar")=c(a$nodePar, lab.col=labCol)
  }
  n
}
clusDendro=dendrapply(hcd, colLab)
plot(clusDendro, main ="UPGMA Tree", type="rectangle", horiz=TRUE)
plot(clusDendro, main ="UPGMA Tree", type="triangle")
相关推荐
爱吃牛肉的大老虎5 分钟前
Rust对象之结构体,枚举,特性
开发语言·后端·rust
bbq粉刷匠18 分钟前
HashMap 底层原理深度拆解(二):putVal 完整链路解析(懒加载 · 链表遍历 · 尾插法)
java·开发语言·哈希算法
@三十一Y39 分钟前
C++:红黑树的实现
开发语言·c++
乐观勇敢坚强的老彭1 小时前
C++信奥:开关门、开关灯问题
开发语言·c++·算法
冻柠檬飞冰走茶1 小时前
PTA基础编程题目集 7-31 字符串循环左移(C语言实现)
c语言·开发语言·数据结构·算法
a1117762 小时前
中文优先的企业 RAG 知识库 开源项目
开发语言·开源·kotlin
破z晓2 小时前
javascript 导出excel表
开发语言·javascript·excel
t-think3 小时前
C++类和对象详解(一)
开发语言·c++
西门啐血3 小时前
上位机开发之假装有设备,使用 C# 模拟串口设备
开发语言·mongodb·c#
ask_baidu3 小时前
python实现Doris的streamLoad
开发语言·python