Ernest A
Ernest A

Reputation: 7839

How to change default aesthetics in ggplot?

Let's say that I would prefer geom_point to use circles (pch=1) instead of solid dots (pch=16) by default. You can change the shape of the markers by passing a shape argument to geom_point, e.g.

ggplot(diamonds, aes(depth, carat, colour=cut)) + geom_point(shape=1)
ggplot(diamonds, aes(depth, carat, colour=cut)) + geom_point(shape=16)

but I can't figure out how to change the default behaviour.

Upvotes: 9

Views: 2925

Answers (2)

Brian Diggs
Brian Diggs

Reputation: 58825

Geom (and stat) default can be updated directly:

update_geom_defaults("point", list(shape = 1))
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()

enter image description here

Upvotes: 16

Ciarán Tobin
Ciarán Tobin

Reputation: 7516

One way to do it (although I don't really like it) is to make your own geom_point function. E.g.

geom_point2 <- function(...) geom_point(shape = 1, ...)

Then just use as normal:

ggplot(diamonds, aes(depth, carat, colour=cut)) + geom_point2()

Or if you want you can override the function geom_point():

geom_point <- function(...) {
  ggplot2::geom_point(shape = 1, ...)
}

This might be considered bad practice but it works. Then you don't have to change how you plot:

ggplot(diamonds, aes(depth, carat, colour=cut)) + geom_point()

Upvotes: 8

Related Questions