我有一个包含时间序列数据的数据框,由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()
有没有一种方法可以用 plotly 绘制一个包括线和自定义标记的时间序列?如果这是一个愚蠢的问题,我很抱歉,我对 plotly 很陌生。
如果你想要一个同时带有标记和线条的轨迹,那么坚持使用 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")