Вам нужно поместить imp.dates
во фрейм данных и изменить данные для слоя geom_vline()
.
Вот некоторые примеры данных:
set.seed(2867)
df <- expand.grid(date = seq(as.Date("2019-01-01"), as.Date("2019-12-31"), by = 1L),
object = paste0("object", 1:4))
df <- transform(df, daily_sales = rpois(nrow(df), lambda = 100))
set.seed(1)
imp <- data.frame(date = sample(unique(df$date), 4))
Здесь я просто выбрал случайным образом 4 даты из серии, которые вы можете сделать:
imp <- data.frame(date = imp.dates)
Полезно, чтобы во втором фрейме данных использовалось то же имя переменной date
, но я не думаю, что это необходимо, просто полезно / легче разобрать в вашей голове.
Теперь мы строим график так, как он у вас (заметьте, я изменил Object
на object
в моем коде)
ggplot(df, aes(x = date, y = daily_sales, colour = object, group = object)) +
geom_line() +
geom_vline(data = imp, ## 1
aes(xintercept = date), ## 2
linetype = 4, colour = "black")
Обратите внимание, что в строке ##1
, где мы добавляем слой geom_vline()
, мы устанавливаем аргумент data
, чтобы слой был нашим фреймом данных важных дат, imp
. В строке ## 2
мы указываем имя переменной в imp
, которая содержит даты, которые мы хотим нарисовать. Остальная часть кода на графике такая же, как у вас.
Это приводит (беспорядок, это случайные данные):
![enter image description here](https://i.stack.imgur.com/JEZzP.png)
, но теперь оно включает 4 выбранные важные даты, представленные в виде вертикальных линий.