是否可以使用ggdendro绘制直方图的子部分。例如,如何在以下示例中仅绘制最左侧的群集:
require(ggplot2)
hc <- hclust(dist(USArrests), "ave")
dhc <- as.dendrogram(hc)
ddata <- dendro_data(dhc, type="rectangle")
ggplot(segment(ddata),labels=rownames(USArrests))+
geom_segment(aes(x=x, y=y, xend=xend, yend=yend))+
theme_dendro()
红利问题:为什么上面的例子中没有显示州标签?
答案 0 :(得分:2)
数据:
hc <- hclust(dist(USArrests), "ave")
dhc <- as.dendrogram(hc)
library(ggdendro)
ddata <- dendro_data(dhc, type="rectangle")
为应绘制的数据创建索引(左侧群集):
index <- seq(3, which(ddata$segment$y[-c(1, 2)] == ddata$segment$y[1])[2])
绘图(包括x轴标签):
library(ggplot2)
ggplot(segment(ddata)[index, ]) +
geom_segment(aes(x = x, y = y, xend = xend, yend = yend)) +
scale_x_discrete(labels = ddata$label$label[seq(sum(ddata$segment$yend == 0))])
答案 1 :(得分:2)
@Elizabeth:您的原始代码可以修改如下,以查看x标签:
require(ggplot2)
hc <- hclust(dist(USArrests), "ave")
ddata <- dendro_data(hc, type="rectangle")
ggplot() +
geom_segment(data=segment(ddata), aes(x=x, y=y, xend=xend, yend=yend)) +
geom_text(data=label(ddata), aes(x=x, y=y, label=label, hjust=0), size=3) +
coord_flip() + scale_y_reverse(expand=c(0.2, 0))