R 循环系统发育树上的节点标记

R 循环系统发育树上的节点标记,r,cluster-analysis,data-visualization,phylogeny,ape-phylo,R,Cluster Analysis,Data Visualization,Phylogeny,Ape Phylo,我试图创建一个循环的系统发育树。我有这部分代码: fit<- hclust(dist(Data[,-4]), method = "complete", members = NULL) nclus= 3 color=c('red','blue','green') color_list=rep(color,nclus/length(color)) clus=cutree(fit,nclus) plot(as.phylo(fit),type='fan',tip.color=color_lis

我试图创建一个循环的系统发育树。我有这部分代码:

fit<- hclust(dist(Data[,-4]), method = "complete", members = NULL)

nclus= 3
color=c('red','blue','green')
color_list=rep(color,nclus/length(color))
clus=cutree(fit,nclus)

plot(as.phylo(fit),type='fan',tip.color=color_list[clus],label.offset=0.2,no.margin=TRUE, cex=0.70, show.node.label = TRUE)
fit当你说“颜色分支”时,我想你的意思是给边缘着色。这似乎管用,但我认为还有更好的办法

在此处使用内置的
mtcars
数据集,因为您没有提供数据

plot.fan <- function(hc, nclus=3) {
  palette <- c('red','blue','green','orange','black')[1:nclus]
  clus    <-cutree(hc,nclus)
  X <- as.phylo(hc)
  edge.clus <- sapply(1:nclus,function(i)max(which(X$edge[,2] %in% which(clus==i))))
  order     <- order(edge.clus)
  edge.clus <- c(min(edge.clus),diff(sort(edge.clus)))
  edge.clus <- rep(order,edge.clus)
  plot(X,type='fan',
       tip.color=palette[clus],edge.color=palette[edge.clus],
       label.offset=0.2,no.margin=TRUE, cex=0.70)  
}
fit <- hclust(dist(mtcars[,c("mpg","hp","wt","disp")]))
plot.fan(fit,3); plot.fan(fit,5)

plot.fan这太棒了。这正是我所需要的。此外,nodelabels()也可以完美地工作。谢谢!谢谢你。现在我已经绘制了树状图,但是树在图的中心分离太多,所以连接标签的边很长。有没有办法控制这种情况?