如何使用 plotly 更改时间序列上的标记?

问题描述 投票:0回答:1

我有一个包含时间序列数据的数据框,由3列组成。time, variablecategory. 我想绘制 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()

有没有一种方法可以用 plotly 绘制一个包括线和自定义标记的时间序列?如果这是一个愚蠢的问题,我很抱歉,我对 plotly 很陌生。

r time-series plotly r-plotly
1个回答
0
投票

如果你想要一个同时带有标记和线条的轨迹,那么坚持使用 plot_ly 函数,而不是添加痕迹。试试这个。

library(plotly)

df %>% 
  group_by(category) %>% 
  plot_ly(x = ~ time, y = ~ var, color = ~ category, mode = 'lines+markers', type = "scatter",
          text = ~ paste("<b>Variable:</b> ", round(var, 2), 
                         "<br />",
                         "<b>Time:</b> ", time), hoverinfo = "text")
© www.soinside.com 2019 - 2024. All rights reserved.