首页 > 解决方案 > ggplot2 - 多个 geom_lines 的单独图例

问题描述

我正在绘制一个看起来像这样的时间序列:

library(ggplot2)

df1 <- data.frame(date=as.Date(seq(ISOdate(2019,1,1), by="1 day", length.out=365)),
                  value=runif(365))

df2 <- data.frame(date=as.Date(seq(ISOdate(2019,1,1), by="1 day", length.out=365)),
                  value=runif(365)+3)

ggplot() +
  geom_line(df1, mapping=aes(x=date, y=value)) +
  geom_line(df2, mapping=aes(x=date, y=value)) +
  geom_vline(aes(xintercept=as.Date("2019-06-15"), colour="Milestone 1"), linetype="dashed") +
  geom_vline(aes(xintercept=as.Date("2019-07-20"), colour="Milestone 2"), linetype="dashed") +
  geom_vline(aes(xintercept=as.Date("2019-09-15"), colour="Milestone 3"), linetype="dashed") +
  scale_color_manual(name="Milestones",
                     breaks=c("Milestone 1","Milestone 2","Milestone 3"),
                     values = c("Milestone 1" = "red",
                                "Milestone 2" = "blue",
                                "Milestone 3" = "green"))

在此处输入图像描述

但是,我想为geom_lines映射的df1和添加颜色和单独的图例df2

如何做到这一点?

标签: rggplot2legend

解决方案


这是你想要做的吗?

library(tidyverse)

df1 <- data.frame(date=as.Date(seq(ISOdate(2019,1,1), by="1 day", length.out=365)),
                  value=runif(365))

df2 <- data.frame(date=as.Date(seq(ISOdate(2019,1,1), by="1 day", length.out=365)),
                  value=runif(365)+3)

df1$Lines <- factor("Line 1")
df2$Lines <- factor("Line 2")
df3 <- rbind(df1, df2)

ggplot(df3) +
  geom_line(df3, mapping = aes(x = date, y = value, alpha = Lines)) +
  geom_vline(aes(xintercept = as.Date("2019-06-15"), colour = "Milestone 1"), linetype = "dashed") +
  geom_vline(aes(xintercept = as.Date("2019-07-20"), colour = "Milestone 2"), linetype = "dashed") +
  geom_vline(aes(xintercept = as.Date("2019-09-15"), colour = "Milestone 3"), linetype = "dashed") +
  scale_color_manual(name="Milestones",
                     breaks=c("Milestone 1","Milestone 2","Milestone 3"),
                     values = c("Milestone 1" = "red",
                                "Milestone 2" = "blue",
                                "Milestone 3" = "green"))

例子.png


推荐阅读