如何在 R 中使用 plotly 添加连接两组点的垂直线?
How to add vertical lines connecting two sets of points using plotly in R?
我想使用 R
中的 plotly
创建一个在两组点之间添加垂直线的图。我知道如何在 ggplot2
中执行此操作,并且我知道我可以使用 ggplotly
函数将 ggplot2
对象转换为 plotly
对象。但是,我想了解如何直接使用 plotly
.
下面是创建示例数据框的示例代码,并使用 ggplot2
和 ggplotly
创建我想要的绘图。
# 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)
我想使用 R
中的 plotly
创建一个在两组点之间添加垂直线的图。我知道如何在 ggplot2
中执行此操作,并且我知道我可以使用 ggplotly
函数将 ggplot2
对象转换为 plotly
对象。但是,我想了解如何直接使用 plotly
.
下面是创建示例数据框的示例代码,并使用 ggplot2
和 ggplotly
创建我想要的绘图。
# 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)