我正在使用 hclust() 根据 R 中的 20,000 行 x 169 列数据集对距离矩阵进行聚类。当我将集群对象转换为树状图并绘制整个树状图时,即使我将其输出为相当大的 pdf,也很难阅读,因为它太大了。
df <- as.data.frame(matrix(abs(rnorm(3380000)), nrow = 20000))
mydist <- vegdist(df)
my.hc <- hclust(mydist, method = "average")
hcd <- as.dendrogram(my.hc)
pdf("hclust_plot.pdf", width = 40, height = 15)
plot(hcd)
dev.off()
我想指定截断树状图的簇数 (k),然后仅在 k 个分割点上方绘制树状图的上部。我知道我可以使用函数 cut() 根据指定的高度 (h) 绘制上部。
pdf("hclust_plot2.pdf", width = 40, height = 15)
plot(cut(hcd, h = 0.99)$upper)
dev.off()
我也知道我可以使用 dendextend 包为 k 组的树状图着色。
library(dendextend)
pdf("hclust_plot3.pdf", width = 40, height = 15)
plot(color_branches(hcd, k = 44))
dev.off()
但是对于我的数据集,这个树状图太密集了,甚至无法读取哪个组是哪个颜色。有没有一种方法可以通过指定 k 而不是 h 来仅绘制切割点上方的树状图的上部?或者有没有办法在给定 k 的情况下获得树状图的 h 值?