如果原始数据集中不存在特定日期的 geom_vline,如何将这些日期添加到我的图中?

问题描述

我想要做的事情的要点是叠加锁定开始的日期和结束的日期。我的数据包含每周销售数字,但不包含 lockodwns 开始或结束的日期,因此当我使用“lockdown.end.dates

这是我的数据的样子

enter image description here

当我尝试使用未包含在我的 unit.sales 数据框中的日期创建向量时,这就是我的对象窗格的外观。请注意,对于lockdown.start.date,我已经调整了日期,以便它们与我在unit.sales 数据框中的日期重叠

enter image description here

####Install Packages####
library(fpp2)
library(dplyr)
library(zoo)
library(xts)
library(ggplot2)

######Load data########

        Unit.sales <- structure(list(
  Date = c(
    "30/03/2019","06/04/2019","13/04/2019","20/04/2019","27/04/2019","04/05/2019","11/05/2019","18/05/2019","25/05/2019","01/06/2019"
  ),Units = c(
    967053.4,633226.9,523264,473914.2,418087.5,504342.2,477819,415650,406972.3,429791.4
  )
),row.names = c(NA,10L),class = "data.frame")

######Convert date column to date format########

Unit.sales$Date <- as.Date(Unit.sales$Date,format='%d/%m/%Y')

######Convert data frame to time series object#####

unit.sales.ts <- xts(Unit.sales$Units,Unit.sales$Date)

class(unit.sales.ts)

#######Visualize data######

unit.sales.plot <- Unit.sales %>% ggplot(aes(x=Date,y=Units)) +
  geom_line() +
  scale_x_date(date_labels="%b %y",date_breaks  ="2 month") +
  labs(title = "Linechart of unit sales")

#Create objects containing the lockdown dates#

lockdown.start.dates <- as.Date(c("2020-03-28","2020-11-07","2021-01-09"))

lockdown.start.dates <- which(Unit.sales$Date %in% lockdown.start.dates)

lockdown.end.dates <- as.Date(c("2020-06-15","2020-11-05","2021-04-12"))

lockdown.end.dates <- which(Unit.sales$Date %in% lockdown.end.dates)

#Add lockdown dates to the unit.sales.plot#

unit.sales.plot + 
geom_vline(xintercept = as.numeric(Unit.sales$Date[lockdown.start.dates,]),col = "red",lwd = 3)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)