在ggplot中使用AES的两种方法之间的区别?

时间:2019-03-09 21:02:52

标签: r ggplot2

我最近开始学习R,但是对ggplot2中的aes功能感到困惑。

我已经看到在代码中放置了aes的两个不同位置。

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy))

ggplot(mpg, aes(x = displ, y = hwy)) +
  geom_point()

两者之间有什么区别?

1 个答案:

答案 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来关闭该层的继承。如果您的大多数图层都使用相同的美感,而有些则没有,那么这非常有用。