0

我正在ggdendro根据树枝中的切点创建树状图并为其着色。我在这个问题中使用了@jlhoward 提供的方法(使用 ggplot2 在 Dendogram 中着色集群)但是当我的叶子标签很长时我遇到了问题。

这是一些示例代码:

df   <- USArrests 
labs <- paste("veryverylongtitlename",1:50,sep="")
rownames(df) <- labs

library(ggplot2)
library(ggdendro)
hc       <- hclust(dist(df), "ave")           # heirarchal clustering
dendr    <- dendro_data(hc, type="rectangle") # convert for ggplot
clust    <- cutree(hc,k=2)                    # find 2 clusters
clust.df <- data.frame(label=names(clust), cluster=factor(clust))
# dendr[["labels"]] has the labels, merge with clust.df based on 
label column
dendr[["labels"]] <- merge(dendr[["labels"]],clust.df, by="label")
# plot the dendrogram; note use of color=cluster in geom_text(...)
ggplot() + 
  geom_segment(data=segment(dendr), aes(x=x, y=y, xend=xend, 
yend=yend)) + 
  geom_text(data=label(dendr), aes(x, y, label=label, hjust=0, color=cluster), 
       size=3) +
  coord_flip() + scale_y_reverse(expand=c(0.2, 0)) + 
  theme(axis.line.y=element_blank(),
    axis.ticks.y=element_blank(),
    axis.text.y=element_blank(),
    axis.title.y=element_blank(),
    panel.background=element_rect(fill="white"),
    panel.grid=element_blank())

在此处输入图像描述

如您所见,这里的标签被切断了。我找到了这个答案(减少树状图(或 y 轴)ggplot 的大小),但我不想使用它,因为我非常喜欢使用它cutree来定义我的集群的能力。如何操作上述代码以适应长标签?非常感谢!

4

0 回答 0