我正在使用R中的hclust()函数对一个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包将聚类图中的dendrogram染成k个颜色组。
library(dendextend)
pdf("hclust_plot3.pdf", width = 40, height = 15)
plot(color_branches(hcd, k = 44))
dev.off()
但对于我的数据集来说,这个树状图太密集了,甚至无法读出哪个组是哪种颜色。是否有一种方法可以仅绘制在切点上方的树状图,而不是通过指定k而不是h来实现?或者是否有一种方法可以获得一个树状图的h值,给定k?