R 在ggplot中格式化日期以突出显示财政年度的开始

R 在ggplot中格式化日期以突出显示财政年度的开始,r,datetime,ggplot2,R,Datetime,Ggplot2,我有关于财政年度的数据,从每年的4月1日开始,到下一个太阳年的3月31日结束 df <- data.frame(date = seq(as.POSIXct("2008-04-01"), by="month", length.out=49), var = rnorm(49)) head(df,3) date var 1 2008-04-01 0.04265025 2 2008-05-01 -1.59671801 3 20

我有关于财政年度的数据,从每年的4月1日开始,到下一个太阳年的3月31日结束

df <- data.frame(date = seq(as.POSIXct("2008-04-01"), by="month", length.out=49),
                 var  = rnorm(49))

head(df,3)
        date         var
1 2008-04-01  0.04265025
2 2008-05-01 -1.59671801
3 2008-06-01  0.4909673 
它正确地给出了:


我的问题是(最后:-)你们中的一些人是否有比上述更好的方式来显示财政年度和最终更好的代码?

您可以使用
geom\u rect
突出显示财政年度。假设将原始绘图保存为
p
,请尝试:

bgdf <- data.frame(xmin=as.POSIXct(paste0(2008:2011,"-04-01")),
                   xmax=as.POSIXct(paste0(2009:2012,"-04-01")),
                   ymin=min(df$var),ymax=max(df$var),alpha=((2008:2011)%%2)*0.1)
p + geom_rect(aes(xmin=xmin,xmax=xmax,ymin=ymin,ymax=ymax),
              data=bgdf,alpha=bgdf$alpha,fill="blue")
bgdf对于
xmin
xmax
alpha
来说都是非常好(而且非常方便)的方法。我喜欢它们,因为它们允许以编程方式创建包含任何数据的矩形,使用
min(years())
和“04-01”作为参数,最终在必要时进行更改。谢谢这是一个非常普遍的答案,在这种情况下完全适用。
bgdf <- data.frame(xmin=as.POSIXct(paste0(2008:2011,"-04-01")),
                   xmax=as.POSIXct(paste0(2009:2012,"-04-01")),
                   ymin=min(df$var),ymax=max(df$var),alpha=((2008:2011)%%2)*0.1)
p + geom_rect(aes(xmin=xmin,xmax=xmax,ymin=ymin,ymax=ymax),
              data=bgdf,alpha=bgdf$alpha,fill="blue")