我使用以下代码在特定高度切割树状图,我遇到的问题是,当我切割树状图时,我不知道如何在节点上添加标签。用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)

10-04 14:15
查看更多