ggplot2 reverse order of scale_brewer

The CRAN version of ggplot2 now allows users to specify direction=-1 in scale_brewer to reverse the colors. The following produces the same plot as the accepted answer.

ggplot(mtcars,aes(x = mpg, y = disp)) + 
  geom_point(aes(colour = factor(cyl))) + 
  scale_colour_brewer(palette="BuPu", direction=-1)

I think you probably want to select the colors using brewer.pal directly and then use scale_colour_manual:

library(ggplot2)
library(RColorBrewer)

ggplot(mtcars,aes(x = mpg, y = disp)) + 
    geom_point(aes(colour = factor(cyl))) + 
    scale_colour_manual(values = rev(brewer.pal(3, "BuPu")))

Then you can rev the order of the colors there.

As of version 2.0,0 of ggplot there is now a more direct way to do this, see the answer by @pbaylis below.


This will not help with the OP's problem - I know. For discrete scales like scale_..._brewer(), doing scale_..._manual(values = rev(colorsYouHad)) is the right answer.

Nevertheless, for continuous scales, you can simply pass:

scale_..._...(..., trans = "reverse")

e.g., for the continuous equivalent of scale_..._brewer():

scale_..._distiller("My Scale", palette = "Spectral", trans = "reverse")