hadley/ggplot2 — Issue #427: incorrect labels in the legend for scale_color_manual()
Author: alyst
Created: 2012-03-06 13:57:28+00:00
State: open

Consider the following example:
```R
test.df <- data.frame( a = rnorm(100), b = rnorm(100), c = sample( c('1','2','3'), 100, replace = TRUE ) )
ggplot( test.df ) + geom_text( aes( x = a, y = b, label = c, color = c ) ) + scale_color_manual(
values = c( "1" = 'red', "2" = 'green', "3" ='blue', "4" = 'orange' ),
labels = c( "4" = '4', "2" = '2', "1" = '1', "3" = '3' ) )
```

It's expected that in the legend you would see 1(red), 2(green), 3(blue).
Instead, labels are assigned to the colors by their order in which they are listed in labels: 4(red) 2(green) 1(blue)

What is worse, in this example:
```R
test.df <- data.frame( a = rnorm(100), b = rnorm(100), c = sample( c('1','2','4'), 100, replace = TRUE ) )
ggplot( test.df ) + geom_text( aes( x = a, y = b, label = c, color = c ) ) + scale_color_manual(
values = c( "1" = 'red', "2" = 'green', "3" ='blue', "4" = 'orange' ),
labels = c( "1" = '1', "2" = '2', "3" = '3', "4" = '4' ) )
```
the order of the values and the labels is perfectly matched, but since value 3 is missing in the data, instead of
1(red), 2(green), 4(orange) we have 1(red), 2(green), 3(orange).

ggplot2 0.9, R2.14.1