如何根据一天中 24 小时的 x 轴时间更改背景颜色?

How do I change the colors of my background based on time of day in x-axis on a 24 hour basis?

hour_mark   avg_intensity
<int>   <dbl>
0   2.1295503
1   1.4190782
2   1.0439443
3   0.4437299
4   0.6330472
5   4.9506438
6   7.7712137
7   10.7336198
8   14.6680988
9   15.3877551
10  17.6437029
11  16.9212513
12  19.8470716
13  18.7752443
14  18.8686211
15  15.5846995
16  17.7166483
17  21.6556291
18  21.9216336
19  21.3852097
20  14.3399558
21  12.0729282
22  9.0630531
23  4.9966777
ggplot(data=avg_int_hourly,
    aes(x=factor(hour_mark),
        y=avg_intensity,group=1))+
    geom_line(color="red")+
    geom_point()+
    labs(title='Average Intensity Each Hour of the Day')+
    xlab('Hours of Day')+
    ylab('Average Intensity')

上面的图表没有问题,但现在我想根据一天中的时间更改背景颜色:0-6 = 紫色,6-19 = 橙色,20-23 = 紫色

所以,我希望它看起来像(能够调整不透明度对我来说也是必要的):

如果可能的话,我希望有一种方法可以添加两种不同颜色的图例,以注明它们代表图表右侧或顶部的夜晚和白天。

我试过类似的东西,但我不知道我在做什么:

我们可以使用 geom_rect:

library(tidyverse)
library(scales)

ggplot(data=avg_int_hourly,
       aes(x=factor(hour_mark),
           y=avg_intensity,group=1))+
  geom_line(color="red")+
  geom_point()+
  geom_rect(aes(xmin=0,xmax=7,ymin=0,ymax=Inf),fill="blueviolet",alpha=0.05)+
  geom_rect(aes(xmin=7,xmax=21,ymin=0,ymax=Inf),fill="pink",alpha=0.05)+
  geom_rect(aes(xmin=21,xmax=24,ymin=0,ymax=Inf),fill="blueviolet",alpha=0.05)+
  labs(title='Average Intensity Each Hour of the Day')+
  xlab('Hours of Day')+
  ylab('Average Intensity')+
  theme_minimal()