Я создаю дендрограммы, используя ggdendro
и раскрашиваю их в соответствии с точками среза в ветвях. Я использую подход, предложенный @jlhoward в этом вопросе ( Colorize Clusters в Dendogram с ggplot2 ), но я сталкиваюсь с проблемами, когда мои листовые метки очень длинные.
Вот пример кода:
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
для определения моих кластеров. Как я могу манипулировать приведенным выше кодом, чтобы соответствовать длинным меткам? Большое спасибо!