如何防止xlim使用geom_curve改变高度?

时间:2018-01-03 19:59:35

标签: r ggplot2

我有以下代码:

library(tidyverse)
data_frame(x = 1:5, x1=x+1, c = c('a','a','a','b','b')) %>% 
      ggplot() +
      geom_curve(aes(x = x, xend= x1, y = 0, yend = 0), curvature = -1.3, alpha=.2) +
    facet_wrap(~ c, ncol=1)

enter image description here 但是我想调整y轴的极限来切割~.1的背景区域。

我试着这样做:

data_frame(x = 1:5, x1=x+1, c = c('a','a','a','b','b')) %>% 
  ggplot() +
  geom_curve(aes(x = x, xend= x1, y = 0, yend = 0), curvature = -1.3, alpha=.2) +
  facet_grid(c ~ .) +
  ylim(0,.35) +
  facet_wrap(~ c, ncol=1)

但它只是根据ylim中的值重新调整拱门。我该如何防止这种行为?

2 个答案:

答案 0 :(得分:4)

coord_fixed()有一些参数可以让你精确控制你想拥有的东西。

另请参阅http://ggplot2.tidyverse.org/reference/coord_fixed.html以供参考。

不幸的是,无法在x内以动态方式使用x1coord_fixed()

只要你把绝对值(0.66.4放在下面)很好,你就可以这样做:

data_frame(x = 1:5, x1 = x+1, c = c('a','a','a','b','b')) %>%
  ggplot(.) +
  geom_curve(aes(x = x, xend = x1, y = 0, yend = 0), curvature = -1.3, alpha = .2) +
  facet_grid(c ~ .) +
  coord_fixed(ratio = 7, xlim = c(0.6, 6.4), ylim = c(0, 0.12), expand = FALSE) +
  scale_y_continuous(breaks = c(0, 0.1))

假设这看起来像你想要的那样,请注意我设置expand = FALSE以零开始ylim,并将缓冲区添加到xlim(0.4)和上层ylim的界限 我已将默认ratio值从1修改为7,以便将您从0.7缩小到0.1,这是我最终想要了解的内容。 ratio = 1意味着您在y轴上具有与在x轴上相同的比例(相同距离)(这是您所谓的重新缩放我相信)。

最后,我不得不为y轴添加手动中断(减少数量),这样网格框会有点大,这也是我推测的可能的愿望。

答案 1 :(得分:3)

ylim(0,.35)替换coord_fixed(ylim=c(0, 0.35))是否符合要求?