将 aes() 函数放在 ggplot() 函数内或放在 geom_point/geom_bar/geom_line () 函数内有什么区别?

DCo*_*sta 1 r ggplot2

我是编程和编码新手,正在尝试在 Google 课程中学习 R。

他们给出了几个使用 ggplot 函数进行视觉效果的示例,但他们以两种方式使用了 aes()。

第一的:

ggplot(data=palmerpenguins) + geom_point(mapping = aes(x = bill_length_mm,y = body_mass_g)) aes() 函数位于 geom_point() 函数内部。

然后他们显示: ggplot(data, aes(x=distance, y= dep_delay, color=carrier, size=air_time, shape = Carrier)) + geom_point()

现在 aes() 函数位于 ggplot() 函数中,它们在其中指定数据集。

切换的原因是什么?看起来 aes() 可以放在任何一个地方。这是真的?对于像编码这样如此具体的事情,令人困惑的是为什么你可以用任何一种方式来做。任何解释将不胜感激。谢谢

MrF*_*ick 5

如果你只有一层,那真的没关系。每个后来的(geom)都可以有它自己的一组映射。如果将其添加到ggplot()调用中,则如果后者未指定它自己的映射,则将使用该“默认”映射。您可以实际添加aes()外部ggplot()geom_调用,这也将按默认值运行。都有一样的

ggplot(data=penguins) + 
  geom_point(mapping = aes(x = bill_length_mm, y = body_mass_g))

ggplot(penguins, aes(x = bill_length_mm, y = body_mass_g)) + 
  geom_point()

ggplot(penguins) + 
  aes(x = bill_length_mm, y = body_mass_g) + 
  geom_point()
Run Code Online (Sandbox Code Playgroud)

这是一个具有不同映射的两个不同层的示例

ggplot(penguins) + 
  aes(x=island, y=bill_length_mm) + 
  geom_boxplot() + 
  geom_jitter(aes(color=sex))
Run Code Online (Sandbox Code Playgroud)

请注意,颜色稍后仅应用于抖动,而不应用于箱线图图层。

在此输入图像描述

  • 我强烈建议阅读“数据可视化”一章,这是 Hadley Wickham 和 Garrett Grolemund 所著的《R for Data Science》一书中的一章:[数据可视化](https://r4ds.had.co.nz/data-visualization)。 html) (3认同)