ggplot中每个时间段的日期之间的阴影

我有一些每日时间序列,我正在尝试使用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()
mmtsky 回答:ggplot中每个时间段的日期之间的阴影

我们可以手动创建一个描述阴影区域的数据框。

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))

enter image description here

本文链接:https://www.f2er.com/3144605.html

大家都在问