我有以下代码:
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)
但我想调整 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.6
和 6.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/