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")) 会为图例添加适当的标题,并将两条线的颜色更改为您想要的任何颜色(在本例中为蓝色和红色)。