Как я могу добавить вертикальную линию в ts_plot?

Я скачал временную шкалу от пользователя твиттера и постараюсь визуализировать количество твитов с течением времени. Я делаю это с помощью rtweets ts_plot. Теперь я пытаюсь добавить вертикальную линию в моем графике. Насколько я знаю, ts_plot позволяет вам работать с ним, как если бы это был обычный ggplot. Поэтому я попробовал geom_vline ggplot2:

Это мой код:

zanetti <- get_timeline("@zac1967", n=3200)

ts_plot(zanetti, "days") +
  theme_bw() +
  xlab("") +
  ylab("# of tweets/day") +
  geom_vline( aes(xintercept = "2019-03-21 00:00:00 UTC"))

Тем не менее, я получаю это сообщение об ошибке:

  no applicable method for 'rescale' applied to an object of class "character" 

Поэтому я попробовал тот же код, но добавил в последней строке as.numeric:

ts_plot(zanetti, "days") +
  theme_bw() +
  xlab("") +
  ylab("# of tweets/day") +
  geom_vline( aes(xintercept = as.numeric("2019-03-21 00:00:00 UTC")))

Что приводит к следующему сообщению об ошибке:

Warning messages:
1: In FUN(X[[i]], ...) : NAs introduced by coercion
2: Removed 53 rows containing missing values (geom_vline). 

1 ответ

Во-первых, вам не нужно использовать aes() так как вы не сопоставляете имя столбца.

Шкала оси X для ts_plot это шкала даты и времени, поэтому вам необходимо соответствующим образом преобразовать значение. Примерно так должно работать:

+ geom_vline(xintercept = as.POSIXct("2019-03-21 00:00:00", tz = "UTC"))
Другие вопросы по тегам