繁体   English   中英

从树状图中切出群集

[英]Cutting out a cluster from dendrogram

我正在使用此链接按照类别绘制带有彩色标签的漂亮的树状图。 第二个答案是我在此链接中看到的( R中的水平树状图的树状切割和矩形周围簇的矩形 ),它使用以下代码:

d <- dist(t(mat[,3:ncol(mat)]), method = "euclidean")
H.fit <- hclust(d, method="ward")
groups <- cutree(H.fit, k=16) # cut tree into  clusters
 hcdata<- dendro_data(H.fit, type="rectangle")
  hcdata$labels <- merge(x = hcdata$labels, y = pm_gtex_comb,  by.x = "label", by.y = "sample",all=TRUE)
 ggplot() + 
 geom_segment(data=segment(hcdata), aes(x=x, y=y, xend=xend, yend=yend)) + 
 geom_text(data=label(hcdata), aes(x, y, label=label, hjust=0, color=cluster), 
        size=3) +
 geom_rect(data=rect, aes(xmin=X1-.3, xmax=X2+.3, ymin=0, ymax=ymax), 
        color="red", fill=NA)+
 geom_hline(yintercept=0.33, color="blue")+
 coord_flip() + scale_y_reverse(expand=c(0.2, 0)) + 
 theme_dendro()

我想剪掉一些群集,因为我有16个群集,带有145个标签,所以我只能查看几个群集,因为我只想聚焦/剪切/放大其中的几个群集。有什么方法可以做这仅用于具有良好的可视化效果,因为该图会杂乱地包含145个标签。由于我想按照标签进行着色,所以我认为ggdendro非常适合。

例如,在此链接中,如果您查看3)树状图的放大http://gastonsanchez.com/blog/how-to/2012/10/03/Dendrograms.html

您可以从dendextend包中尝试prune (它可以做很多其他漂亮的事情 ):

library(dendextend)
hc <- hclust(dist(USArrests), "ave")
clusters <- cutree(hc, k=3)
par(mfrow=c(1,2), mar=c(6, 4, 2, 3))
plot(as.dendrogram(hc), main="regular")
plot(dend <- prune(as.dendrogram(hc), names(clusters[clusters==1])), 
     ylim=range(hc$height), main="without cluster #1")

或者,如果您坚持使用ggdendro:

ggdendro::ggdendrogram(dend) 

也可以使用dendextend创建ggplot2图:

library(dendextend)
ggd1 <- as.ggdend(dend)
library(ggplot2)
ggplot(ggd1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM