r - 如何手动将线型分配给绘图中的线
问题描述
我有这样的情节:
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
in的等价物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)
推荐阅读
- mongodb - 如何替换 mongodb wt 文件?
- mysql - mysql为什么子查询返回所有客户的总余额而不是单个客户的余额
- signalr - SignalR SocketException 仅在 Azure VM 上运行时
- python - ImportError:无法导入名称
仅在从 atom 运行文件时 - javascript - JavaScript Promise 没有返回正确的值
- php - JsGrid 和 laravel
- javascript - 打印 N-Queen 问题中的所有解决方案
- android - 更改 Google 地点自动填充预测的语言
- c# - DocumentDb DocumentClient 获取前 25 个文档
- azure-cosmosdb - MongoDB 计数没有给出真实的结果