如何使用时间序列图在 r plotly 中添加虚线垂直线

How to add a dash vertical line in r plotly with time series plot

我有一个如下所示的时间序列:

+------------+-------+------+
| Dates      | Sales | City |
+------------+-------+------+
| 2020-01-01 | 10    | A    |
+------------+-------+------+
| 2020-01-02 | 20    | A    |
+------------+-------+------+
| 2020-01-03 | 30    | A    |
+------------+-------+------+
| 2020-01-04 | 40    | A    |
+------------+-------+------+
| 2020-01-05 | 50    | A    |
+------------+-------+------+
| 2020-01-01 | 60    | B    |
+------------+-------+------+
| 2020-01-02 | 70    | B    |
+------------+-------+------+
| 2020-01-03 | 50    | B    |
+------------+-------+------+
| 2020-01-04 | 30    | B    |
+------------+-------+------+
| 2020-01-05 | 60    | B    |
+------------+-------+------+

我想使用 plotly 将这两个时间序列绘制在一起,不同的城市使用不同的颜色。然后在日期 2020-01-03 添加一条垂直虚线(当然这只是一个简单的伪数据集)

它看起来像这样:

我停在这里:

plotly(x = ~df$Dates) %>%
 add_lines( y = ~df$Sales, color = ~df$City)

如何添加这条锚定到特定日期的垂直虚线

P.S。这不是一个重复的问题——在使用 base R 或 ggplot 的 SO 上有一些类似的问题,但是 none 足够接近以使用 R 解决 Plotly 中的这个特定问题。

非常感谢您的帮助!

使用 add_segments 的一种方式:

library(plotly)

plot_ly(df, x = ~Dates, y = ~Sales, type = 'scatter', mode = 'lines', color = ~City) %>%
  add_segments(y = 0, yend = 70, x = as.Date('2020-01-03'), xend = as.Date('2020-01-03'), 
               line = list(dash = "dash"), showlegend=FALSE)