首页 > 解决方案 > 如何手动将线型分配给绘图中的线

问题描述

我有这样的情节:

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_manualin的等价物plotly?如何在不为每一行添加新跟踪的情况下实现这一点?k(我事先不知道确切的值数)

标签: rggplot2plotlyr-plotly

解决方案


类似,这可以通过使用线型的命名向量来实现,如下所示:

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)

在此处输入图像描述


推荐阅读