У меня есть датафрейм, содержащий данные временного ряда, образованные 3 столбцами. time
, variable
и category
. Я хочу построить time
на оси x и variable
на оси y, и я хочу создать группы на основе category
. Кроме того, я хотел бы изменить маркеры по умолчанию, созданные с помощью plotly
, чтобы они отображали округленное значение variable
.
Рассмотрим следующий пример:
var = rnorm(150)
var[51:100] = var[51:100] +5
var[101:150] = var[101:150] +10
time = seq(as.Date('2018-01-01'), as.Date('2018-01-01')+49, by = 'days')
df = tibble(var = var,
time = rep(time, 3),
category = c(rep('a', 50), rep('b', 50), rep('c', 50)))
head(df)
var time category
<dbl> <date> <chr>
1 0.330 2018-01-01 a
2 -0.786 2018-01-02 a
3 -0.838 2018-01-03 a
4 -0.0719 2018-01-04 a
5 0.0320 2018-01-05 a
6 -1.16 2018-01-06 a
library(plotly)
df %>% group_by(category) %>%
plot_ly(x = ~ time, y = ~ var, color = ~ category, mode = 'lines+markers')
Это создает вид графика, который я хочу: см. здесь , но когда я пытаюсь изменить маркеры:
df %>% group_by(category) %>%
plot_ly(x = ~ time, y = ~ var, color = ~ category, mode = 'lines+markers') %>%
add_markers(text = ~ paste("<b>Variable:</b> ", round(var, 2),
"<br />",
"<b>Time:</b> ", time), hoverinfo = "text")
Он преобразует чертеж графика только в точки, но не в линии. см. Здесь . Если я попытаюсь принудительно добавить строки с помощью команды add_lines()
, то получу двойную легенду со значениями для точек и линий отдельно.
df %>% group_by(category) %>%
plot_ly(x = ~ time, y = ~ var, color = ~ category, mode = 'lines+markers') %>%
add_markers(text = ~ paste("<b>Variable:</b> ", round(var, 2),
"<br />",
"<b>Time:</b> ", time), hoverinfo = "text") %>%
add_lines()
Есть ли способ построить временной ряд с сюжетно что включает в себя линии и индивидуальные маркеры? Извините, если это глупый вопрос, я совершенно новичок в заговоре.