我最近开始学习R,但是对ggplot2中的aes功能感到困惑。
我已经看到在代码中放置了aes的两个不同位置。
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy))
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point()
两者之间有什么区别?
答案 0 :(得分:2)
找不到骗子,所以有一个答案:
在ggplot()
中指定的美学被后续层继承。在特定层中指定的美学仅特定于该层。这是一个示例:
library(ggplot2)
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
geom_smooth()
ggplot(mtcars) +
geom_point(aes(wt, mpg)) +
geom_smooth() # error, geom_smooth needs its own aesthetics
当您希望不同的图层具有不同的规格(例如,这两个图不同)时,这非常有用,您必须决定要使用哪个图形:
ggplot(mtcars, aes(wt, mpg, color = factor(cyl))) +
geom_point() +
geom_smooth()
ggplot(mtcars, aes(wt, mpg)) +
geom_point(aes(color = factor(cyl))) +
geom_smooth()
在各个层上,您可以使用inherit.aes = FALSE
来关闭该层的继承。如果您的大多数图层都使用相同的美感,而有些则没有,那么这非常有用。