我有一些每日时间序列,我正在尝试使用 来对绘图的某些区域进行着色ggplot。我想在每年的七月到八月之间进行遮阳。我正在尝试geom_rect,我可以在两个日期之间获取它,但不能在每年的相同日期之间获取它。
数据:
library(dplyr)
library(ggplot2)
library(tidyquant)
data(FANG)
data <- FANG %>%
filter(symbol == "FB")
data %>%
ggplot(aes(x = date, y = adjusted)) +
geom_line()
Run Code Online (Sandbox Code Playgroud)
我们可以手动创建一个描述要着色的区域的数据框。
library(lubridate)
shade <-
data %>%
transmute(year = year(date)) %>%
unique() %>%
mutate(
from = as.Date(paste0(year, "-07-01")),
to = as.Date(paste0(year, "-08-31"))
)
shade
#> # A tibble: 4 x 3
#> year from to
#> <dbl> <date> <date>
#> 1 2013 2013-07-01 2013-08-31
#> 2 2014 2014-07-01 2014-08-31
#> 3 2015 2015-07-01 2015-08-31
#> 4 2016 2016-07-01 2016-08-31
ggplot() +
geom_rect(data = shade, aes(xmin = from, xmax = to, ymin = -Inf, ymax = Inf)) +
geom_line(data = data, aes(x = date, y = adjusted))
Run Code Online (Sandbox Code Playgroud)