在事件前后动态更改线图中的颜色

Dynamically change colors in linegraph before and after event

假设我有一个包含 n 条线的折线图。 每条线都有一个对应的 x 轴值,我希望在特定事件前后使用不同的颜色。

例如,每个人开始时都是绿色,但是当他们有活动时,线条颜色会切换为红色。

我能够使用循环在 base 中找到解决方案,寻找 base 或 ggplot 解决方案。

lines <- data.frame(id = rep(c("A","B"), each = 5),
                    x = 1:5,
                    val = 1:10)

events <-data.frame(id = c("A","B"),
                    time = c(3, 4))

library(tidyverse)
lines %>%
  left_join(events) %>%
  group_by(id) %>%
  mutate(status = if_else(x < time, "before", "after")) %>%
  ggplot(aes(x, val, color = status, group = id)) +
  geom_line(size = 4)