ggplot2 0.9.0 descarta automaticamente os níveis de fator não usados ​​da legenda da plotagem?

Eu recentemente atualizei para o ggplot2 0.9.0 da versão 0.8.9, e agora estou percebendo que as lendas do meu enredo só mostram os níveis de fatores usados ​​no enredo (omite os níveis não utilizados). Antes, includeia todos os níveis de fator na legenda. Estou executando o Windows 7 e R 2.15.0 (2.14.2 antes de hoje).

Alguém mais está achando isso também? Existe uma maneira que eu possa obter os níveis de fatores não utilizados para exibir na minha lenda de plotagem?

library(ggplot2) df <- data.frame(fruit = rep(c("apple", "orange"), times=11), year = 1990:2011, qty = rnorm(22, 100, 20)) # This plot only gives "apple" in the legend now. # Before, I used to get both "apple" and "orange". qplot(year, qty, data = subset(df, fruit=="apple"), colour = fruit) 

O qplot () usado para me dar tanto “maçã” e “laranja” na legenda (mesmo que houvesse apenas pontos para “maçã”). Agora eu só recebo “maçã” na legenda.

Razão pela qual isso surgiu – estou fazendo muitos charts de subconjuntos de um dataset e quero que as legendas sejam padronizadas em charts (normalmente eu apreciaria que os níveis não utilizados fossem descartados automaticamente e não precisassem digitar droplevels (), mas esse é o único caso eu quero esses níveis não utilizados). Desculpas se esta é uma questão local para o meu computador apenas.

Sim, você quer adicionar drop = FALSE à sua escala de colors:

 ggplot(subset(df,fruit == "apple"),aes(x = year,y = qty,colour = fruit)) + geom_point() + scale_colour_discrete(drop = FALSE) 

Uma segunda maneira é definir explicitamente as inputs necessárias usando o argumento limits :

 ggplot(subset(df,fruit == "apple"),aes(x = year,y = qty,colour = fruit)) + geom_point() + scale_colour_discrete(limits = c("apple", "orange"))