R plot_ly()向时间数据添加垂直线

时间:2020-09-01 13:02:18

标签: r date plotly line

我想在特定日期添加一条垂直线到我的地块。我正在使用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")

我的情节看起来像这样:

PLOT

所以,我的问题是如何在日期"2018-10-01"上得到一条黑色的竖线? 每年开始时是否也可能有垂直线?还是每年的每个季度(1月-4月-7月-10月)?

如果有人可以帮助我,我会很高兴?不幸的是,经过一天的互联网浏览,我找不到任何有效的方法。

2 个答案:

答案 0 :(得分:0)

由于没有提供任何数据来重现您的问题,因此建议您使用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', mode = 'lines',
            line = list(color = 'black'),name = '') %>%
  layout(title = "Average Price Difference Forward vs. Spot", xaxis = list(title = "Date"),
         yaxis = list(title = "EUR / MWh"))

让我知道是否可行!

答案 1 :(得分:0)

这是基于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, 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"))

p %>% layout(shapes = list(vline(as.Date("2018-10-01"))))

result

基于this answer