8

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.

Ernest A
  • 7,526
  • 8
  • 34
  • 40

2 Answers2

15

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

Brian Diggs
  • 57,757
  • 13
  • 166
  • 188
8

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()
Ciarán Tobin
  • 7,306
  • 1
  • 29
  • 45