我正在尝试使用R中的集群例程agnes来执行UPGMA并生成树状图,其中节点标记有与研究站点名称(而不是数字)相等的文本值。我对R很糟糕,但得到了dist矩阵并进行了分析以便运行但是我无法进行绘图。我按照以下链接的说明,但收到错误消息。
How do I label the terminal nodes of a cut dendrogram?
#Simpson dissim
library(betapart)
dist.sim<-beta.pair(Data, index.family="sor")
class(dist.sim)
betasim.sim<-dist.sim[["beta.sim"]]
class(betasim.sim)
UPGMA.orig<-agnes(betasim.sim)
labels = read.csv("labels.csv", header = T)
labels = labels$label
as.vector(labels)
local({
newLab <<- function(n) {
if(is.leaf(n)) {
a <- attributes(n)
i <<- i+1
attr(n, "label") <- labels[i]
}
n
}
i <- 0
})
UPGMA.orig<- dendrapply(dagn , newLab)
labels(UPGMA.orig)
print.factor出错(c(NA_integer_,NA_integer_,NA_integer_,NA_integer_: 替换的长度为零
par(mfrow = c(1, 1))
dagn <- as.dendrogram(as.hclust(UPGMA.orig))
dagn2 <- as.dendrogram(as.hclust(UPGMA.orig), hang = 0.2)
op <- par(mar = par("mar") + c(0,0,0,4)) # more space to the right
plot(dagn2, horiz = TRUE)
plot(dagn, horiz = TRUE, center = TRUE,
nodePar = list(lab.cex = 0.6, lab.col = "black", pch = NA, labels=labels),
main = paste("Sky Island Birds"), xlab = "Dissimilarity (ßsim)" , xlim=c(0.4, 0))
par(op)