Как поменять маркеры на временных рядах с сюжетом? - PullRequest
0 голосов
/ 04 мая 2020

У меня есть датафрейм, содержащий данные временного ряда, образованные 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()

Есть ли способ построить временной ряд с сюжетно что включает в себя линии и индивидуальные маркеры? Извините, если это глупый вопрос, я совершенно новичок в заговоре.

...