Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 990
Ernest A Avatar asked Jan 07 '13 13:01

Ernest A


2 Answers

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

like image 115
Brian Diggs Avatar answered Sep 20 '22 14:09

Brian Diggs


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()
like image 30
Ciarán Tobin Avatar answered Sep 21 '22 14:09

Ciarán Tobin