我想要实现的工作流程是:
dm <- dist(data)
dend <- hclust(dm)
k <- stats::cutree(dend, k = 10)
data$clusters <- k
plot(hclust, colorBranchees = k) #???? What I can use here.因此,我使用cutree输出搜索彩色树状图分支。我找到的只有dendextend。
问题是我没能用dendextend实现工作流。
这就是我想出来的,但我现在想要显示clusterLabels
library(dendextend)
hc <- hclust(dist(USArrests))
dend <- as.dendrogram(hc)
kcl <- dendextend::cutree(dend, k = 4)
dend1 <- color_branches(dend, clusters = kcl[order.dendrogram(dend)], groupLabels = TRUE)%>% set("labels_cex", 1)
plot(dend1, main = "Dendrogram dist JK")

此外,尝试像groupLabels = 1:4这样的东西也不会有帮助。
使用参数k (o集群的数量)指定groupLable可以工作。但不幸的是,标签与dendextend自己的cutree方法生成的标签不同。
注意,这里的集群4有2个成员。
> table(kcl)
kcl
1 2 3 4
14 14 20 2这篇文章建议使用dendextend::cutree(dend,k = nrCluster, order_clusters_as_data = FALSE) r dendrogram - groupLabels not match real labels (package dendextend)
但是,我不能使用dendextend::cutree的输出对数据进行分组(因为排序不匹配。
我很乐意在R中使用不同的树状图绘图库,但是到目前为止,我在Web上搜索的"coloring dendrogram by cutree output“指向了dendextend包。
发布于 2021-05-15 19:40:15
对不起,我不太明白你的问题。
您似乎希望在curtree的输出和原始数据之间保持一致。如果是这样,那么你需要使用dendextend::cutree(dend,k = nrCluster, order_clusters_as_data = TRUE),例如:
require(dendextend)
d1 <- USArrests[1:10,]
hc <- hclust(dist(d1))
dend <- as.dendrogram(hc)
k <- dendextend::cutree(dend, k = 3, order_clusters_as_data = TRUE)
d2 <- cbind(d1, k)
plot(color_branches(dend, 3))
d2
# an easier way to see the clusters is by ordering the rows of the data based on the order of the dendrogram
d2[order.dendrogram(dend),]情节很好:

并且聚类被正确地映射到数据(参见输出)
> require(dendextend)
> d1 <- USArrests[1:10,]
> hc <- hclust(dist(d1))
> dend <- as.dendrogram(hc)
> k <- dendextend::cutree(dend, k = 3, order_clusters_as_data = TRUE)
> d2 <- cbind(d1, k)
> plot(color_branches(dend, 3))
> d2
Murder Assault UrbanPop Rape k
Alabama 13.2 236 58 21.2 1
Alaska 10.0 263 48 44.5 1
Arizona 8.1 294 80 31.0 2
Arkansas 8.8 190 50 19.5 1
California 9.0 276 91 40.6 2
Colorado 7.9 204 78 38.7 1
Connecticut 3.3 110 77 11.1 3
Delaware 5.9 238 72 15.8 1
Florida 15.4 335 80 31.9 2
Georgia 17.4 211 60 25.8 1
> # an easier way to see the clusters is by ordering the rows of the data based on the order of the dendrogram
> d2[order.dendrogram(dend),]
Murder Assault UrbanPop Rape k
Connecticut 3.3 110 77 11.1 3
Florida 15.4 335 80 31.9 2
Arizona 8.1 294 80 31.0 2
California 9.0 276 91 40.6 2
Arkansas 8.8 190 50 19.5 1
Colorado 7.9 204 78 38.7 1
Georgia 17.4 211 60 25.8 1
Alaska 10.0 263 48 44.5 1
Alabama 13.2 236 58 21.2 1
Delaware 5.9 238 72 15.8 1如果这回答了你的问题,或者如果你在这里有后续问题,请LMK。
https://stackoverflow.com/questions/66867484
复制相似问题