R – change the default colour palette in ggplot

ggplot2r

I have written a function that returns a vector of color names:

custom.colors <- function(n) {
  palette <- c("dodgerblue1", "skyblue4", "chocolate1", "seagreen4",
               "bisque3", "red4", "purple4", "mediumpurple3",
               "maroon", "dodgerblue4", "skyblue2", "darkcyan",
               "darkslategray3", "lightgreen", "bisque",
               "palevioletred1", "black", "gray79", "lightsalmon4",
               "darkgoldenrod1")
  if (n > length(palette))
    warning('palette has duplicated colours')
  rep(palette, length.out=n)
}

I would like ggplot to use the above function to generate the palette by default. Maybe only for discrete scales. Using scale_manual() every time is too much of a drag. Is it possible?

Best Answer

To redefine the default color scale you can also just redefine the ggplot function:

ggplot <- function(...) ggplot2::ggplot(...) + scale_color_brewer(palette="Spectral")

The same works for the fill scale.