我正在ggplot2做一些项目的分析,偶然我偶然发现一些(对我来说)奇怪的行为,我无法解释.当我写aes(x = cyl, ...)这个情节时,如果我使用相同的变量,它看起来会有什么不同aes(x = mtcars$cyl, ...).当我删除facet_grid(am ~ .)两个图表时再次相同.下面的代码是在我的项目中生成相同行为的代码之后建模的:
library(dplyr)
library(ggplot2)
data = mtcars
test.data = data %>%
select(-hp)
ggplot(test.data, aes(x = test.data$cyl, y = mpg)) +
geom_point() +
facet_grid(am ~ .) +
labs(title="graph 1 - dollar sign notation")
ggplot(test.data, aes(x = cyl, y = mpg)) +
geom_point()+
facet_grid(am ~ .) +
labs(title="graph 2 - no dollar sign notation")
Run Code Online (Sandbox Code Playgroud)
这是图1的图片:

这是图2的图片:

我发现我可以使用aes_string而不是aes将变量名称作为字符串传递来解决这个问题,但我想理解为什么ggplot表现得那样.在类似的尝试中也会出现问题facet_wrap.
对于任何提前帮助都很有帮助!如果我不理解,我会感到非常不舒服......