如何解决R plot_ly向时间数据添加垂直线
我想在特定日期添加一条垂直线到我的地块。我正在使用R中plot_ly()
包中的plotly
函数。
p <- plot_ly(dt.allDataFvsS,x = dt.allDataFvsS$date,y = dt.allDataFvsS$meanDifference,mode = 'lines',type = "scatter",line = list(color = " #007d3c")) %>%
layout(title = "Average Price Difference Forward vs. Spot",xaxis = list(title = "Date"),yaxis = list(title = "EUR / MWh"))
日期具有以下格式:例如"2018-10-01" ("Y-M-D")
我的情节看起来像这样:
所以,我的问题是如何在日期"2018-10-01"
上得到一条黑色的竖线?
每年开始时是否也可能有垂直线?还是每年的每个季度(1月-4月-7月-10月)?
如果有人可以帮助我,我会很高兴?不幸的是,经过一天的互联网浏览,我找不到任何有效的方法。
解决方法
由于没有提供任何数据来重现您的问题,因此建议您使用add_trace()
函数的下一种方法,在此方法中定义直线的坐标:
p <- plot_ly(dt.allDataFvsS,x = dt.allDataFvsS$date,y = dt.allDataFvsS$meanDifference,mode = 'lines',type = "scatter",line = list(color = " #007d3c")) %>%
add_trace(x =as.Date("2018-10-01"),type = 'scatter',line = list(color = 'black'),name = '') %>%
layout(title = "Average Price Difference Forward vs. Spot",xaxis = list(title = "Date"),yaxis = list(title = "EUR / MWh"))
让我知道是否可行!
,这是基于shapes
而不是添加另一条迹线的另一种方法(您可以看到缩小的区别+垂直线没有图例项):
library(plotly)
dates <- seq(from = as.Date("2018-08-01"),to = as.Date("2018-12-31"),by = 1)
dt.allDataFvsS <- data.frame(date = dates,meanDifference = sin(seq_along(dates)*0.1))
vline <- function(x = 0,color = "red") {
list(
type = "line",y0 = 0,y1 = 1,yref = "paper",x0 = x,x1 = x,line = list(color = color)
)
}
p <- plot_ly(dt.allDataFvsS,line = list(color = " #007d3c")) %>%
layout(title = "Average Price Difference Forward vs. Spot",yaxis = list(title = "EUR / MWh"))
p %>% layout(shapes = list(vline(as.Date("2018-10-01"))))
基于this answer。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。