根据月份阴影背景的ggplot

luc*_*ano 3 r data-visualization date ggplot2 lubridate

这段代码:

df <- data.frame(day <- 0:365, value = 1)
library(ggplot2)
ggplot(df, aes(day, value)) + geom_blank() + scale_x_continuous(breaks = seq(0, 365, 10)) + theme_bw()
Run Code Online (Sandbox Code Playgroud)

产生这个情节:

在此输入图像描述

使用R代码,我想根据day哪个月落在哪个阴影的背景.我希望情节看起来如下(情节背景是Photoshop).我会对使用的解决方案特别感兴趣lubridate.

在此输入图像描述

Rom*_*rik 6

这是使用解决方案的一部分geom_raster.

library(lubridate)
library(ggplot2)

x <- seq(from = as.Date("2000/1/1"), to = as.Date("2000/12/31"), "day")
xy <- data.frame(datum = x, day = day(x), month = month(x), seq.day = 1:length(x), 
                 month.ind = rep(rep(0:1, 6), times = rle(xy$month)$lengths))

ggplot(xy, aes(x = seq.day, y = 1, fill = as.factor(month.ind))) +
  theme_bw() +
  scale_fill_manual(values = c("black", "white")) +
  scale_x_continuous(breaks = seq(0, 365, 10)) +
  geom_raster(alpha = 0.3, show_guide = FALSE)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述