2012-04-03 39 views
28

Niedawno zaktualizowałem do wersji ggplot2 0.9.0 z wersji 0.8.9, a teraz dostaję, że moje legendy działek pokazują tylko poziomy czynnikowe używane na wykresie (pomijają te nieużywane). Zanim uwzględni wszystkie poziomy czynników w legendzie. Używam Windows 7 i R 2.15.0 (2.14.2 przed dzisiaj).ggplot2 0.9.0 automatycznie upuszczając nieużywane poziomy czynnika z legendy wydruku?

Czy ktoś jeszcze to znajduje? Czy istnieje sposób, aby uzyskać poziomy niewykorzystanego współczynnika do wyświetlania w legendzie fabuły?

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) 

qplot() używany dać mi zarówno „jabłko” i „Orange” w legendzie (choć było tylko punkty dla „jabłko”). Teraz dostaję tylko "jabłko" w legendzie.

Powód, dla którego to się pojawiło - robię wiele wykresów podzbiorów zbioru danych i chcę, aby legendy były ujednolicone na wszystkich poletkach (zwykle doceniłbym, że poziomy niewykorzystane zostały automatycznie odrzucone i nie trzeba wpisywać droplevels(), ale jest to jedyny przypadek, w którym chcę te niewykorzystane poziomy). Przepraszamy, jeśli jest to pytanie lokalne tylko na moim komputerze.

Odpowiedz

32

Tak, chcesz dodać drop = FALSE do skali kolorów:

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

Drugim sposobem jest jednoznacznie określić wymagane wpisy za pomocą limits argument:

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

Z jakichś powodów tego, pracował dla scale_color_manual() i drop = FALSE nie – zer0hedge

Powiązane problemy