使用多个 aes() 参数设置 ggplot2 表达式中线条的颜色

Setting colour of a line in a ggplot2 expression with multiple aes() arguments

我想为这个数据集中的每个系列画一条不同的线:

example <- data.frame(xAxis = c(1, 2, 3, 4, 5),
                  ValueA = c(5.5, 4.5, 4, 2.9, 2),
                  ValueB = c(5, 5.3, 5, 4.7, 4),
                  ValueC = c(4, 3.2, 3, 4, 3),
                  ValueD = c(5, 4.5, 3, 2.9, 3))

按照 ggplot2 包中 geom_lineaes 的预期用途,我构建我的图表如下:

library(ggplot2)

ggplot(example, aes(x = xAxis)) + 
    geom_line(aes(y = ValueA)) + 
    geom_line(aes(y = ValueB)) + 
    geom_line(aes(y = ValueC)) + 
    geom_line(aes(y = ValueD))

虽然设置颜色参数会产生问题。用下面的好像是标注了系列,但不影响选色:

ggplot(example, aes(x = xAxis)) + 
geom_line(aes(y = ValueA, colour = "green")) + 
geom_line(aes(y = ValueB, colour = "blue")) + 
geom_line(aes(y = ValueC, colour = "yellow")) + 
geom_line(aes(y = ValueD, colour = "red"))

但是,如果我将它们中的每一个设置为 "red",那么情节理解将它们全部设置为 "red"。

ggplot(example, aes(x = xAxis)) + 
geom_line(aes(y = ValueA, colour = "red")) + 
geom_line(aes(y = ValueB, colour = "red")) + 
geom_line(aes(y = ValueC, colour = "red")) + 
geom_line(aes(y = ValueD, colour = "red"))

我错过了什么?我已经看到 'standard' 对 ggplot 中多个系列图的回答是也使用 reshape 来融化数据,但我觉得这里应该有一个不错的解决方案而不需要它。

解决方案是将颜色参数移到 aes() 之外。然后,您将看到您指定的四种颜色。

ggplot(example, aes(x = xAxis)) + 
geom_line(aes(y = ValueA), colour = "green") + 
geom_line(aes(y = ValueB), colour = "blue") + 
geom_line(aes(y = ValueC), colour = "yellow") + 
geom_line(aes(y = ValueD), colour = "red")