首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用箭头注释闪开的条形图

用箭头注释闪开的条形图
EN

Stack Overflow用户
提问于 2018-08-14 00:52:40
回答 2查看 456关注 0票数 0

我有以下代码

代码语言:javascript
复制
d <- data.frame(a = c("a", "b", "a", "b"), b = c("c", "c", "d", "d"), y = c(4, 5, 3, 2))
ggplot(data = d, aes(x = a, y = y, fill = b)) +
   geom_col(position = position_dodge(0.9)) +
   annotate("segment", x = "a", xend = "a", y = 5, yend = 4, arrow = arrow())

我得到的信息如下:

我想要的是有一个箭头指向一个水泥杆。我可能想要有多个箭头。例如:

问题是我不知道如何在x轴上处理混凝土钢筋,即哪些是单个闪避钢筋的x值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-14 01:15:39

您可以通过一个数字来引用ab的位置,从1开始。这里,a将为1,b将为2。该数字与级别的位置相对应(参见levels(d$a))。

要添加多个注释,可以添加多个annotate元素,也可以使用x/xend/y/yend位置的向量。

因此,在您的情况下,以下内容应该可以很好地工作:

代码语言:javascript
复制
dodge <- 0.9
ggplot(data = d, aes(x = a, y = y, fill = b)) +
  geom_col(position = position_dodge(dodge)) +
  annotate("segment", x = 1,       xend = 1 - dodge/4, y = 5, yend = 4, arrow = arrow()) +
  annotate("segment", x = 1 + dodge/4, xend = 1 + dodge/4, y = 4, yend = 3, arrow = arrow())

或者使用向量:

代码语言:javascript
复制
dodge <- 0.9
ggplot(data = d, aes(x = a, y = y, fill = b)) +
  geom_col(position = position_dodge(dodge)) +
  annotate("segment", x     = c(1, 1 + dodge/4),
                      xend  = c(1 - dodge/4, 1 + dodge/4),
                      y     = c(5, 4),
                      yend  = c(4, 3), arrow = arrow())

当然,您可以对annotate元素的数据使用data.frame,就像对任何geom_*元素所做的那样。

票数 3
EN

Stack Overflow用户

发布于 2018-08-14 01:09:16

代码语言:javascript
复制
data.frame(a=c("a", "b", "a", "b"), b=c("c", "c", "d", "d"), y=c(4, 5, 3, 2)) %>%
  ggplot(aes(x=a, y=y, fill=b)) +
  geom_col(position=position_dodge(0.9)) +
  annotate("segment", x=1, xend=.7, y = 5, yend=4.1, arrow=arrow()) +
  annotate("segment", x=1.2, xend=1.2, y = 4, yend=3.1, arrow=arrow())

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

https://stackoverflow.com/questions/51827135

复制
相关文章

相似问题

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