Search code examples
rcolorsplotggplot2scale

scale_fill_discrete and scale_fill_manual - legend options confusion


I have a problem with applying two different changes on my ggplot2 object. I have a barplot with 3 groups on it. I want to:

  1. set color for each group
  2. reorder the order of legend labels

I have found the following solutions to the above problems:

  1. + scale_fill_manual(values = c("red", "green", "blue"))
  2. + scale_fill_discrete(guide = guide_legend(reverse=TRUE))

The problem is the second application (+ scale_fill_discrete(...)) is overriding the first one:

Scale for 'fill' is already present. Adding another scale for 'fill', which will replace the existing scale.

(separately both of them work fine). How to deal with it?


Solution

  • You do not need to make it double, this should work:

    scale_fill_manual(values = c("red", "green", "blue"), name = "My name", 
                      guide = guide_legend(reverse = TRUE))