2012-09-22 17 views
1

是否可以使用ggdendro繪製直方圖的子部分。例如,我怎麼可能剛繪製的最左邊的集羣下面的例子:使用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() 

enter image description here

獎金問題:爲什麼國家的標籤沒有在上面的例子說明了什麼?

回答

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))]) 

enter image description here

2

@伊麗莎白:您的原碼可修改如下,以查看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)) 
相關問題