'Setting Defaults for geoms and scales ggplot2
Theming for ggplot2 makes it quite easy to relegate the need for multiple or repetitive + opt()... lines. However, I would like to know if there is a way to define defaults for geoms and scale colors. Instead of having to write ...+ scale_fill_manual() for each plot, I'd like to be able to set it and forget it. Similarly, I'd like to be able to set geom options so I don't have to retype (or forget to retype) things like geom_text(...,size=3,color="white")
Update:
For scales, it seems at some point that there was a method:
set_default_scale("colour", "discrete", "grey")
But this function doesn't seem to exist in the most recent version of ggplot2.
Solution 1:[1]
There is another method for this now. You can essentially overwrite any aesthetics scale, for example:
scale_colour_discrete <- function(...) scale_colour_brewer(..., palette="Set2")
scale_fill_discrete <- function(...) scale_fill_brewer(... , palette="Set2")
Now, your aesthetics will be coloured or filled following that behaviour.'
As per: https://groups.google.com/forum/?fromgroups=#!topic/ggplot2/w0Tl0T_U9dI
With respect to defaults to geoms, you can use update_geom_defaults, for example:
update_geom_defaults("line", list(size = 2))
Solution 2:[2]
I can't think of anything useful for the geoms, but for the scales, one option would be to use the fact that components of ggplots are all simply R objects that can be saved, stored and reassigned like any other.
So you could perhaps create your own collection of "default" versions of many scales, like:
sfmDefault <- scale_fill_manual(...)
scmDefault <- scale_colour_manual(...)
etc. with your desired default values. Put them in your .RProfile or wherever and use them as needed.
Solution 3:[3]
Changing the default palletes, can also be achieved by setting options, eg.:
options(ggplot2.continuous.colour="viridis")
options(ggplot2.continuous.fill="viridis")
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Brandon Bertelsen |
| Solution 2 | joran |
| Solution 3 | jan-glx |
