如何在 R 中使用 plotly 添加连接两组点的垂直线?

How to add vertical lines connecting two sets of points using plotly in R?

我想使用 R 中的 plotly 创建一个在两组点之间添加垂直线的图。我知道如何在 ggplot2 中执行此操作,并且我知道我可以使用 ggplotly 函数将 ggplot2 对象转换为 plotly 对象。但是,我想了解如何直接使用 plotly.

下面是创建示例数据框的示例代码,并使用 ggplot2ggplotly 创建我想要的绘图。

# Load packages
library(tidyverse)
library(plotly)

# Create example dataset
dat <- tibble(
  Group = factor(c(2, 2, 2, 1, 1, 1)),
  Date = as.Date(rep(c("2020-01-01", "2020-01-02", "2020-01-03"), times = 2)),
  value = c(1, 2, 1, 5, 5.5, 6)
)

g <- ggplot(dat, aes(x = Date, y = value, color = Group)) +
  geom_point() +
  scale_color_brewer(type = "qual", palette = "Set1") +
  geom_line(aes(group = Date), color = "black") +
  theme_minimal()

ggplotly(g)

这是另一个示例代码,我尝试使用 plotly 创建相同的图。我想做的最后一步是像上一个图一样添加水平线。

plot_ly(dat, x = ~Date, y = ~value, color = ~factor(Group), 
        colors = "Set1",
        type = "scatter", mode = "markers")

这似乎可以

plot_ly(dat, x = ~Date, y = ~value, color = ~factor(Group), 
        colors = "Set1",
        type = "scatter", mode = "markers") %>%
  add_segments(data=dat,  
               x = ~Date[Group == 1], 
               xend= ~ Date[Group == 1], 
               y = ~value[Group == 1], 
               yend = ~value[Group ==2],
               color = ~ Group[Group == 2], 
               line=list(color="black"), 
               showlegend=FALSE)