Плотные линии: сделать разрыв строки графика, даже если для этого разрыва нет записей
Я сталкиваюсь с проблемой построения временного ряда с помощью графика в R. По сути, мои данные в фрейме данных структурированы следующим образом:
datetime | measure
2018-04-09 00:40:05 | 3.4
2018-04-09 00:41:00 | 3.9
2018-04-09 00:42:07 | 3.8
2018-04-09 00:43:00 | 3.7
2018-04-09 00:44:00 | 4.2
2018-04-09 00:45:00 | 5.8
2018-04-09 01:15:00 | 5.8
Наблюдения распределены неравномерно, у меня есть одно наблюдение в каждую минуту, но примерно, может быть разница в несколько секунд. Тогда у меня есть большие промежутки между наблюдениями, в примере, который я привел здесь, есть промежуток в 30 минут между последним наблюдением и предыдущим.
Очевидно, что Plotly соединяет эти два последних наблюдения в линейную диаграмму, и вместо этого я хотел бы иметь фактически пустой пробел между ними.
Спасибо за вашу помощь и внимание!
1 ответ
Вы можете достичь этого, разделив свои данные на "куски" и нанеся каждый из них на отдельную трассу. Воспроизводимый пример:
df <- data.frame(
time = Sys.time() - c(1:10, 51:60),
value = runif(20),
chunk = rep(c("A", "B"), each = 10)
)
p <- plot_ly(data = df[which(df$chunk == "A"),], x = ~time, y = ~value, name = "chunk A", type = "scatter", mode = "lines") %>%
add_trace(data = df[which(df$chunk == "B"),], x = ~time, y = ~value, name = "chunk B", type = "scatter", mode = "lines")
# or if there are more 'chunks'
p2 <- plot_ly(data = df, x = ~time, y = ~value, color = ~chunk, type = "scatter", mode = "lines")
Естественно, вам нужно найти осмысленный способ группировки ваших данных, то есть, если разница во времени между наблюдениями больше, чем [укажите отсечение], переходите к новому фрагменту.
Попробуйте использовать connectgaps=False
; проверьте https://plotly.com/r/line-charts/