Ваша предыдущая попытка с этим
geom_rect(aes(xmin = date, xmax = date, ymin = -Inf, ymax = Inf, fill = semesters)
идет по правильному пути. Это не работает, потому что xmin будет таким же, как xmax, поэтому нет прямоугольника? Также я думаю, что geom_rect не работает с -Inf и + Inf, в отличие от geom_text и т. Д.
library(lubridate)
GDAXI<-GDAXI%>%mutate(semester=semester(date))
# define y limits
LIMS = range(GDAXI$close,na.rm=T)
# we need to define the semesters and year, i.e the boxes we want to plot
GDAXI$semester_grp = semester(GDAXI$date, with_year = TRUE)
# here we create the coordinates of the rectangle
# basically x1 is start of semester
# x2 is end of semester
rectData = GDAXI %>% group_by(semester_grp) %>%
summarize(x1=min(date),x2=max(date),y1=LIMS[1],y2=LIMS[2],semester=unique(semester))
# we call ggplot on the two separate data frames
ggplot()+
geom_rect(data=data.frame(rectData),mapping=aes(xmin=x1,xmax=x2,ymin=y1,ymax=y2,fill=factor(semester)),alpha=0.3) +
geom_line(data=GDAXI,aes(x=date, y=close))+
scale_fill_manual(values=c("blue","red"),name="Semester")+
theme_bw()

Это должно работать, если ваша датазначения не имеют пробелов. Вы можете немного изменить их, если работаете с другими данными с пробелами.
И я думаю, вам нужно поэкспериментировать с scale_fill_manual и alpha в geom_rect, чтобы получить правильные цвета:)