使用多个 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_line
和 aes
的预期用途,我构建我的图表如下:
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")
我想为这个数据集中的每个系列画一条不同的线:
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_line
和 aes
的预期用途,我构建我的图表如下:
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")