我使用以下代码在特定高度切割树状图,我遇到的问题是,当我切割树状图时,我不知道如何在节点上添加标签。用R程序?
library(Heatplus)
cc=as.dendrogram(hclust(as.dist(mat),method="single"))
cutplot.dendrogram(cc,h=20)
最佳答案
在大量研究了?dendrogram
的帮助文档之后,我偶然发现了dendrapply
函数,该函数包含一个执行类似操作的示例。根据对?dendrapply
中示例的修改,这是您的解决方案:
创建树状图并在高度h=20
处切割:
dhc <- as.dendrogram(hc <- hclust(dist(USArrests), "ave"))
chc <- cut(dhc, h=20)$upper
使用newLabels定义向量,并使用函数
newLab
修改单个节点标签。然后将其传递给dendrapply
:newLabels <- paste("Custom", 1:22, sep="_")
local({
newLab <<- function(n) {
if(is.leaf(n)) {
a <- attributes(n)
i <<- i+1
attr(n, "label") <- newLabels[i]
}
n
}
i <- 0
})
nhc <- dendrapply(chc, newLab)
labels(nhc)
[1] "Custom_1" "Custom_2" "Custom_3" "Custom_4" "Custom_5" "Custom_6"
[7] "Custom_7" "Custom_8" "Custom_9" "Custom_10" "Custom_11" "Custom_12"
[13] "Custom_13" "Custom_14" "Custom_15" "Custom_16" "Custom_17" "Custom_18"
[19] "Custom_19" "Custom_20" "Custom_21" "Custom_22"
plot(nhc)