首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >翻转树状图

翻转树状图
EN

Stack Overflow用户
提问于 2013-04-28 19:27:30
回答 1查看 886关注 0票数 2

我正在使用graph图来绘制树状图,但我希望将标签放在左边,以使图形更直观。我该怎么做呢?谢谢!

代码语言:javascript
复制
library(ggplot2)
library(ggdendro)

### Data
countries <- c("UK","AU","SA","CH")
distmatrix <- matrix(c(0.00, 0.16, 1.01, 0.97, 0.16, 0.00, 0.84, 0.79, 1.01, 0.84, 0.00, 1.49, 0.97, 0.79, 1.49, 0.00),
nrow=4,dimnames=list(countries, countries))

### Cluster
hc = hclust(as.dist(distmatrix), method = "ward")

### Plot
ggdendrogram(hc, rotate=TRUE, theme_dendro=FALSE)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-28 19:58:24

关键是,当rotate=TRUE这样做时,代码ggdendrogram

代码语言:javascript
复制
if (rotate) {
    p <- p + coord_flip()
    p <- p + scale_y_reverse(expand = c(0.2, 0))
}

但您并不希望scale_y_reverse(.)完成。所以,一种方法是让你自己做coord_flip()

代码语言:javascript
复制
ggdendrogram(hc, rotate=FALSE, theme_dendro=FALSE) + coord_flip()

但是,一个明显的问题是,labels将不会得到适当的证明。而且您不能在ggdendrogram()函数中做太多事情,因为它不允许在外部设置hjustangle属性。

因此,对于您的情况,我建议您通过从ggdendrogram函数中复制代码行来自己创建ggplot()

代码语言:javascript
复制
data <- dendro_data(hc)
p <- ggplot() + geom_segment(data = segment(data), 
              aes_string(x = "x", y = "y", xend = "xend", yend = "yend"))
p <- p + geom_text(data = label(data), 
              aes_string(x = "x", y = "y", label = "label"), hjust = 1, angle = 0)
p + scale_y_continuous(expand=c(0.2, 0)) + coord_flip()

这提供了:

另一种方法是根据需要修改ggdendrogram函数并重新编译它。我认为这样做要容易得多,而且也是你想要的:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16262371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档