首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用r中的ggdendro将标签添加到ggplot中的树状图

使用r中的ggdendro将标签添加到ggplot中的树状图
EN

Stack Overflow用户
提问于 2012-09-28 05:51:43
回答 2查看 4.5K关注 0票数 1

如何将标签添加到ggdendro图?通过阅读?dendro_data,我意识到我应该使用调用'labels‘,但找不到一个实际实现的例子。谁能演示一下如何在下面的例子中添加叶子标签?谢谢

代码语言:javascript
复制
require(ggplot2)

hc <- hclust(dist(USArrests), "ave")
dhc <- as.dendrogram(hc,hang=0.1)
ddata <- dendro_data(dhc, type="rectangle")
ggplot(segment(ddata)) + geom_segment(aes(x=x, y=y, xend=xend, yend=yend))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-28 11:02:29

您可以使用label(ddata)生成的数据框通过调用geom_text()来添加叶标签。我还使用scale_y_continuous扩展了绘图范围,这样标签就不会被截断。

代码语言:javascript
复制
p <- ggplot(segment(ddata)) + geom_segment(aes(x=x, y=y, xend=xend, yend=yend))
p + geom_text(aes(x = x, y = y, label = label, angle = -90, hjust = 0), data= label(ddata)) +
  scale_y_continuous(expand = c(0.3, 0))

但是,除非您不喜欢这些标签的显示方式,否则最好使用ggdendrogram()

代码语言:javascript
复制
ggdendrogram(ddata)
票数 2
EN

Stack Overflow用户

发布于 2015-09-29 04:39:53

通过应用以下内容,我能够在ggdendro中绘制挂起的树状图,而无需大量的工作。您只需构建一个标签的数据帧,其中还包含叶位置。这是通过过滤掉只取整数的点来完成的。

代码语言:javascript
复制
# tree is a an extracted dendro_data() object.
label_data <- bind_cols(filter(segment(tree), x == xend & x%%1 == 0), label(tree))

ggplot() + 
geom_segment(data=segment(tree), aes(x=x, y=y, xend=xend, yend=yend)) +
geom_text(data=label_data, aes(x=xend, y=yend, label=label, hjust=0, color = LT), size=2) +
coord_flip() + 
scale_y_reverse(expand=c(0.2, 0)) +
theme_bw() +
theme(panel.border = element_blank(),
      panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank(),
      axis.line = element_blank(),
      axis.title = element_blank(),
      axis.text = element_blank(),
      axis.ticks = element_blank(),
      legend.position = "None") 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12630565

复制
相关文章

相似问题

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