R中aes内的字符串常量 - ggplot2
String constant inside aes in R - ggplot2
我的查询参考了这个代表:
d1 <- data.frame(index= 1:100,x=1:100,x_hat= 1:100+ rnorm(100))
ggplot(data = d1 ) +
geom_line(aes(x=index,y=x,color="True X")) +
geom_line(aes(x=index,y=x_hat,color="Estimated X")) +
scale_x_continuous(name = "" ) +
ylab("")
代码正在执行我希望它执行的操作,但我不知道它是如何执行的。当我说 color = "True X" 时,我认为它正在动态生成一个常量变量。
对吗?它是如何工作的?有人可以就此说几句话吗?这种方法的美妙之处在于它会自动创建正确的图例。
你的直觉基本上是正确的。在每个 geom_line
中指定一个字符串常量是告诉 ggplot2
以默认颜色绘制线条并添加一个标有您在 color =
之后指定的任何字符串的图例。如果您在两个 geom 中指定了相同的字符串(例如 color = "True X"
),您将只会得到带有红色默认颜色的一行,以及只有一个标签的图例。所以换句话说,每个唯一的字符串常量告诉 ggplot 以不同的颜色绘制相应的线并为图例添加标签。
如果您想进一步自定义,可以将 scale_color_manual
添加到对 ggplot 的调用中。例如,scale_color_manual("Type of X", values = c("blue", "red"))
会为图例添加适当的标题,并将两条线的颜色更改为您想要的任何颜色(在本例中为蓝色和红色)。
我的查询参考了这个代表:
d1 <- data.frame(index= 1:100,x=1:100,x_hat= 1:100+ rnorm(100))
ggplot(data = d1 ) +
geom_line(aes(x=index,y=x,color="True X")) +
geom_line(aes(x=index,y=x_hat,color="Estimated X")) +
scale_x_continuous(name = "" ) +
ylab("")
代码正在执行我希望它执行的操作,但我不知道它是如何执行的。当我说 color = "True X" 时,我认为它正在动态生成一个常量变量。
对吗?它是如何工作的?有人可以就此说几句话吗?这种方法的美妙之处在于它会自动创建正确的图例。
你的直觉基本上是正确的。在每个 geom_line
中指定一个字符串常量是告诉 ggplot2
以默认颜色绘制线条并添加一个标有您在 color =
之后指定的任何字符串的图例。如果您在两个 geom 中指定了相同的字符串(例如 color = "True X"
),您将只会得到带有红色默认颜色的一行,以及只有一个标签的图例。所以换句话说,每个唯一的字符串常量告诉 ggplot 以不同的颜色绘制相应的线并为图例添加标签。
如果您想进一步自定义,可以将 scale_color_manual
添加到对 ggplot 的调用中。例如,scale_color_manual("Type of X", values = c("blue", "red"))
会为图例添加适当的标题,并将两条线的颜色更改为您想要的任何颜色(在本例中为蓝色和红色)。