我的数据(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 种颜色。
您可以通过将f变量与变量交叉来获得 4 种颜色- 如果值来自y1或y2列:
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)