如何标记剪切树形图的终端节点?

aka*_*ash 4 r hierarchical-clustering dendrogram dendextend

我使用以下代码在特定高度剪切树形图.我遇到的问题是当我剪切树形图时,我无法弄清楚如何向节点添加标签.如何用标签剪切树形图使用R程序?

library(Heatplus)
cc=as.dendrogram(hclust(as.dist(mat),method="single"))
cutplot.dendrogram(cc,h=20)
Run Code Online (Sandbox Code Playgroud)

And*_*rie 6

经过大量深入研究帮助文档后?dendrogram,我偶然发现了dendrapply包含一个非常相似的例子的函数.以下是您的解决方案,基于以下示例的修改?dendrapply:

创建树形图并剪切高度h=20:

dhc <- as.dendrogram(hc <- hclust(dist(USArrests), "ave"))
chc <- cut(dhc, h=20)$upper
Run Code Online (Sandbox Code Playgroud)

使用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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述