和有什么区别
ggplot(mtcars, aes(mpg)) +
geom_histogram(aes(y = ..density..))
和
ggplot(mtcars, aes(mpg), aes(y = ..density..)) +
geom_histogram()
我知道几何层中的 aes() 覆盖了数据层中的 aes()。但是上面的代码片段之一更可取吗?
和有什么区别
ggplot(mtcars, aes(mpg)) +
geom_histogram(aes(y = ..density..))
和
ggplot(mtcars, aes(mpg), aes(y = ..density..)) +
geom_histogram()
我知道几何层中的 aes() 覆盖了数据层中的 aes()。但是上面的代码片段之一更可取吗?
不同之处在于,当在 ggplot 函数中设置美学时,它们会被任何其他构建在它之上的几何图形继承。如果您仅在一个几何图形中指定美学,它将仅在该几何图形中使用。而且,正如您所提到的,geom 中使用的任何美学都会覆盖 ggplot 函数中的设置。
至于哪个更可取,我认为这取决于您使用 ggplot 对象的目标。例如,如果您只创建一个图,那么您使用哪种方法并不重要。但是,如果您计划呈现相同数据的多个不同可视化,您可以重用 ggplot 对象并简单地向其添加不同的几何图层:
创建一个可重用的 ggplot 对象:
p <- ggplot(mtcars)
添加直方图几何:
p + geom_histogram( aes(mpg, ..density..))
重用具有不同几何图形的 ggplot 对象:
p + geom_point(aes(cyl, mpg))
这是一个简单的示例,但您可以理解,在创建更复杂的可视化时,重用绘图对象的能力会派上用场。