ggplotly () не отображает geom_vline / geom_hline, когда данные имеют тип POSIXct - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь сделать график с «маркерами времени».Эти метки времени являются вертикальными линиями для определенных дат.Данные времени имеют формат POSIXct.Я хотел бы использовать удивительный интерактивный интерфейс Plotly и использовать в нем мои объекты ggplot.

Проблема заключается в том, что эти "маркеры времени" не отображаются после использования ggplotly ().Я уже пробовал с plotly::add_segments(), но он не работает.Вот два воспроизводимых примера:

1.С данными не POSIXct он отлично работает

# dummy dataset
df2 = data.frame(id = 1:10, measure = runif(10, 0, 20))
events2 = data.frame(number = c(2,3,8))
# ggplot graph
p2 = ggplot() + geom_line(data = df2, aes(x = id, y = measure))  +
  geom_vline(data = events2, aes(xintercept = events2$number), color = "red")
p2
# plotly graph that displays the geom_vline properly
ggplotly(p2)

2.С POSIXct данные не показывают правильный результат*) но это "сложно".Есть ли более простой способ решить эту проблему?

Я использую Windows 10 с R версии 3.5.0, RStudio и следующие пакеты: library(tidyverse) и library(plotly)

1 Ответ

0 голосов
/ 10 октября 2018

Простой обходной путь - установить xintecept из geom_vline в числовое значение.

пример данных

df = data.frame(date = seq(as.POSIXct("2017-07-01", tz = "UTC", format = "%Y-%m-%d"),
                           as.POSIXct("2018-04-15", tz = "UTC", format = "%Y-%m-%d"),
                           "1 month"),
                measure = runif(10, 0, 20))
events = data.frame(date_envents = as.POSIXct(c("2017-10-12", "2017-11-12", "2018-03-15"), tz = "UTC", format = "%Y-%m-%d"))

код

p = ggplot() + geom_line(data = df, aes(x = date, y = measure))  +
  geom_vline(data = events, aes(xintercept = as.numeric(events$date)), color = "red")

результат

ggplotly(p)

enter image description here

...