如何在ggplot中更改默认美学?

Ern*_*t A 6 default r ggplot2 aesthetics

假设我更喜欢默认geom_point使用circle(pch=1)而不是solid dots(pch=16).您可以通过传递shape参数来更改标记的形状geom_point,例如

ggplot(diamonds, aes(depth, carat, colour=cut)) + geom_point(shape=1)
ggplot(diamonds, aes(depth, carat, colour=cut)) + geom_point(shape=16)
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何更改默认行为.

Bri*_*ggs 13

Geom(和stat)默认值可以直接更新:

update_geom_defaults("point", list(shape = 1))
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Mad*_*one 7

一种方法(虽然我不喜欢它)是制作自己的geom_point函数.例如

geom_point2 <- function(...) geom_point(shape = 1, ...)
Run Code Online (Sandbox Code Playgroud)

然后正常使用:

ggplot(diamonds, aes(depth, carat, colour=cut)) + geom_point2()
Run Code Online (Sandbox Code Playgroud)

或者如果你想要,你可以覆盖这个功能geom_point():

geom_point <- function(...) {
  ggplot2::geom_point(shape = 1, ...)
}
Run Code Online (Sandbox Code Playgroud)

这可能被认为是不好的做法,但它确实有效.然后你不必改变你的绘图方式:

ggplot(diamonds, aes(depth, carat, colour=cut)) + geom_point()
Run Code Online (Sandbox Code Playgroud)