ggplot aes() 选择

数据挖掘 r 可视化
2022-02-25 14:23:25

和有什么区别

ggplot(mtcars, aes(mpg)) +
  geom_histogram(aes(y = ..density..))

ggplot(mtcars, aes(mpg), aes(y = ..density..)) +
  geom_histogram()

我知道几何层中的 aes() 覆盖了数据层中的 aes()。但是上面的代码片段之一更可取吗?

1个回答

不同之处在于,当在 ggplot 函数中设置美学时,它们会被任何其他构建在它之上的几何图形继承。如果您仅在一个几何图形中指定美学,它将仅在该几何图形中使用。而且,正如您所提到的,geom 中使用的任何美学都会覆盖 ggplot 函数中的设置。

至于哪个更可取,我认为这取决于您使用 ggplot 对象的目标。例如,如果您只创建一个图,那么您使用哪种方法并不重要。但是,如果您计划呈现相同数据的多个不同可视化,您可以重用 ggplot 对象并简单地向其添加不同的几何图层:

创建一个可重用的 ggplot 对象:

p <- ggplot(mtcars)

添加直方图几何:

p + geom_histogram( aes(mpg, ..density..))

重用具有不同几何图形的 ggplot 对象:

p + geom_point(aes(cyl, mpg))

这是一个简单的示例,但您可以理解,在创建更复杂的可视化时,重用绘图对象的能力会派上用场。