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

标签 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 中的值重新缩放拱门.我怎样才能防止这种行为?

最佳答案

coord_fixed()有参数可以让你精确地控制你想要的东西。

另见 http://ggplot2.tidyverse.org/reference/coord_fixed.html以供引用。

不幸的是,您的 x 无法使用。和 x1以动态方式在 coord_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 轴添加手动中断(减少一些),这样网格框会更大一点,这也是我推断出的你可能的愿望。

关于r - 如何防止 xlim 使用 geom_curve 改变高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48084316/

相关文章:

r - ggplot map - 使用 coord_map 时出现不需要的水平线

r - 使用列范围或选择模式计算(按行)列

r - 仅命名小平面图中的第一个条形

R ggplot2 - 具有通用色标的多个图

r - 基于 x 轴在绘图上显示工具提示

r - 如何在ggplot2中绘制参数曲线

r - 将多边形添加到 SpatialPolygonsDataFrame

r - 如何在不使用 R 中的 `length` 的情况下从中间索引切片数据直到结束(就像在 python 中一样)?

r - 在组内计算值变化前后的值,为每个独特的转变生成新变量

r - dplyr 0.7.0 tidyeval 包