轴和绘图填充区域之间的填充区域(ggplot2)

Fill area between axis and plot fill area (ggplot2)

我正在使用此代码:

 library(tidyverse)
 set.seed(143)
 series <- data.frame(
   time = c(rep(2017, 4),rep(2018, 4), rep(2019, 4), rep(2020, 4)),
   type = rep(c('a', 'b', 'c', 'd'), 4),
   value = rpois(16, 10)
   )
 plot1 <- ggplot(series, aes(time, value)) +
   geom_area(aes(fill = type))
 plot2 <- ggplot(series, aes(time, value)) +
   geom_area(aes(fill = type)) +
   scale_x_continuous(limits=c(2018, 2020), breaks=seq(2014, 2021, by=1))

对于plot2,如何将x=2018和y轴之间的'fill'展开?我不想看到 2017 本身(如 plot1),但我希望在 y 轴(比如 x=2017.8)和 x=2018 之间看到这个 'fill'。

我尝试了 limits=c(2017.8, 2020),但没有成功。

编辑

这就是我要找的:

您可以使用扩展:


plot2 <- ggplot(series, aes(time, value)) +
  geom_area(aes(fill = type)) +
  scale_x_continuous(limits=c(2018, 2020), breaks=seq(2014, 2021, by=1))

plot2 + scale_x_continuous(expand = c(0,0)) 

如果您想通过加法扩大规模:

plot2 + scale_x_continuous(expand = expansion(add = c(-0.2,0)))
ggplot(series, aes(time, value)) +
  geom_area(aes(fill = type)) + 
  coord_cartesian(xlim=c(2017.8, 2020)) +
  scale_x_continuous(breaks=seq(2018, 2021, 1))

给予

coord_cartesian() 在计算中包含 所有 输入数据(平滑、插值等),生成绘图,然后根据要求裁剪生成的图像。相反,lims()xlim()ylim() 等将超出请求限制的点设置为 NA 执行计算和构建绘图之前.