我有一个这样的情节。
library(plotly)
library(tidyr)
library(dplyr)
data.frame(date = seq(ymd('2020-01-01'), ymd('2020-05-31'), by = '1 day'),
sin = sin(seq(-pi, pi, length.out = 152)),
cos = cos(seq(-pi, pi, length.out = 152))) %>%
gather(k, v, -date) %>%
plot_ly() %>%
add_lines(x = ~date, y = ~v, linetype = ~k, color = I('black'))
输出结果如下
我想做的是手动将线型分配给以下值 k
变量,例如,将虚线分配给 cos
和实线到 sin
不管他们的顺序。基本上,我正在寻找相当于 ggplot2::scale_linetype_manual
在 plotly
? 如何才能做到不为每行添加新的跟踪?(我不知道具体的 k
价值)。)
类似于 ggplot2 这可以通过使用一个命名的线型向量来实现,比如这样。
library(plotly)
library(tidyr)
library(dplyr)
library(lubridate)
lty <- c(cos = "dash", sin = "solid")
data.frame(date = seq(ymd('2020-01-01'), ymd('2020-05-31'), by = '1 day'),
sin = sin(seq(-pi, pi, length.out = 152)),
cos = cos(seq(-pi, pi, length.out = 152))) %>%
gather(k, v, -date) %>%
plot_ly() %>%
add_lines(x = ~date, y = ~v, linetype = ~k, color = I('black'), linetypes = lty)