我使用以下代码在特定高度切割树状图。我遇到的问题是,当我切割树状图时,我无法弄清楚如何向节点添加标签。如何切割带有标签的树状图使用 R 程序?
library(Heatplus)
cc=as.dendrogram(hclust(as.dist(mat),method="single"))
cutplot.dendrogram(cc,h=20)
我使用以下代码在特定高度切割树状图。我遇到的问题是,当我切割树状图时,我无法弄清楚如何向节点添加标签。如何切割带有标签的树状图使用 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)
这是针对 Andrie 所写内容的修改解决方案,但使用了一个名为“ dendextend ”的新包,专门为此类事情构建。
您可以在以下 URL 的“使用”部分中的演示文稿和小插图中看到许多示例:https ://github.com/talgalili/dendextend
这是这个问题的解决方案:
# define dendrogram object to play with:
dhc <- as.dendrogram(hc <- hclust(dist(USArrests), "ave"))
chc <- cut(dhc, h=20)$upper
# loading the package
require(dendextend)# let's add some color:
# change labels with a simple assignment:
labels(chc) <- paste("Custom", 1:22, sep="_")
plot(chc)
要安装软件包(因为我还没有将它上传到 CRAN),请使用:
####################
## installing dendextend for the first time:
if (!require('installr')) install.packages('installr'); require('installr')
## install.Rtools() # run this if you are using Windows and don't have Rtools
require2(devtools)
install_github('dendextend', 'talgalili')
require2(Rcpp)
install_github('dendextendRcpp', 'talgalili')
最好的,塔尔
cc$labels
这是树状图中所有元素的向量。
cc$labels <- myVector
您可以添加自己的矢量来更改标签