我有以下代码:
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)
我试着这样做:
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
中的值重新调整拱门。我该如何防止这种行为?
答案 0 :(得分:4)
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轴添加手动中断(减少数量),这样网格框会有点大,这也是我推测的可能的愿望。
答案 1 :(得分:3)
用ylim(0,.35)
替换coord_fixed(ylim=c(0, 0.35))
是否符合要求?