gpt4 book ai didi

r - R中水平树状图的树切割和簇周围的矩形

转载 作者:行者123 更新时间:2023-12-04 05:38:34 24 4
gpt4 key购买 nike

我试图在 R 中绘制层次聚类的结果作为树状图,用矩形标识集群。

以下代码对垂直树状图进行了操作,但对于水平树状图 ( horiz=TRUE ),不绘制矩​​形。有没有办法对水平树状图做同样的事情。

library("cluster")
dst <- daisy(iris, metric = c("gower"), stand = FALSE)
hca <- hclust(dst, method = "average")
plot(as.dendrogram(hca), horiz = FALSE)
rect.hclust(hca, k = 3, border = "red")

此外,我想绘制一条线以所需的距离值切割树。如何在 R 中绘制它。 cutree函数返回集群,但也可以绘制它。
cutree(hca, k = 3)

我正在寻找的所需输出是这样的。

dendrogram

如何在 R 中完成这项工作?

最佳答案

jlhoward 和 Backlin 的答案都很好。

您还可以尝试使用 dendextend 包,专为这种事情而设计。它有一个 rect.dendrogram功能类似于 rect.hclust ,但带有 horiz 参数(加上对矩形边缘位置的更多控制)。要查找相关高度,您可以使用 heights_per_k.dendrogram函数(在使用 dendextendRcpp 包时会快得多)

这是一个简单的示例,说明如何获得与上述示例相同的结果(带有额外的彩色分支,只是为了好玩):

install.packages("dendextend")
install.packages("dendextendRcpp")

library("dendextend")
library("dendextendRcpp")

# using piping to get the dend
dend <- iris[,-5] %>% dist %>% hclust %>% as.dendrogram

# plot + color the dend's branches before, based on 3 clusters:
dend %>% color_branches(k=3) %>% plot(horiz=TRUE, main = "The dendextend package \n Gives extended functionality to R's dendrogram object")

# add horiz rect
dend %>% rect.dendrogram(k=3,horiz=TRUE)

# add horiz (well, vertical) line:
abline(v = heights_per_k.dendrogram(dend)["3"] + .6, lwd = 2, lty = 2, col = "blue")

enter image description here

关于r - R中水平树状图的树切割和簇周围的矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com