R ggplot - 具有相同颜色变量的多行仅显示第一行的图例

skd*_*134 0 r legend ggplot2

我的数据(dt1)如下:

dt1 <- structure(list(date = structure(c(NA, 17179, 17180, 17181, 17182, 
17183, 17178, 17179, 17180, 17181, 17182, 17183), class = "Date"), 
    f = c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L), y1 = c(68L, 
    43L, 99L, 53L, 12L, 20L, 29L, 49L, 68L, 15L, 71L, 88L), y2 = c(15L, 
    15L, 66L, 53L, 63L, 37L, 91L, 17L, 87L, 87L, 43L, 77L)), row.names = c(NA, 
-12L), class = "data.frame")

       date f y1 y2
1  12-01-17 0 68 15
2  13-01-17 0 43 15
3  14-01-17 0 99 66
4  15-01-17 0 53 53
5  16-01-17 0 12 63
6  17-01-17 0 20 37
7  12-01-17 1 29 91
8  13-01-17 1 49 17
9  14-01-17 1 68 87
10 15-01-17 1 15 87
11 16-01-17 1 71 43
12 17-01-17 1 88 77
Run Code Online (Sandbox Code Playgroud)

我现在想绘制一个多折线图,日期在 x 轴上,y1 和 y2 在 y 上,但由 2 条不同的线表示。但是我也有变量“f”,我想将其用作两条线的颜色变量。我写了以下代码:

ggplot(data = dt1) +
geom_line(aes(x = date, y = y1, color = factor(f))) +
geom_line(aes(x = date, y = y2, color = factor(f)))
Run Code Online (Sandbox Code Playgroud)

但不是 4 种颜色,我得到 4 条线的 2 种颜色,即 2 条线为蓝色,2 条线为红色,而且在图例中,我只有与 y1 相关的图例。我想为图例框中的所有 4 行和 4 个项目获得 4 种颜色。

Paw*_*ros 5

您可以通过将f变量与变量交叉来获得 4 种颜色- 如果值来自y1y2列:

dt1 %>%
  gather(key, value, y1:y2) %>%
  unite('f', f:key, sep = '_') %>%
  ggplot(aes(
    x = date,
    y = value,
    color = f
  )) +
  geom_line()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明