ggplot2 0.9.0 nicht verwendete Faktorstufen automatisch aus der Plotlegende entfernen?

Ich habe kürzlich ein Upgrade von Version 0.8.9 auf ggplot2 0.9.0 durchgeführt und jetzt sehe ich, dass in meinen Plotlegenden nur die im Plot verwendeten Faktorstufen angezeigt werden (die nicht verwendeten werden weggelassen). Vorher wurden alle Faktorstufen in die Legende aufgenommen. Ich verwende Windows 7 und R 2.15.0 (2.14.2 vor heute).

Findet das noch jemand? Gibt es eine Möglichkeit, die nicht verwendeten Faktorstufen in meiner Plotlegende anzuzeigen?

<code>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) 
</code>

Das qplot () gab mir in der Legende sowohl "Apfel" als auch "Orange" (obwohl es nur Punkte für "Apfel" gab). Jetzt bekomme ich nur noch "Apfel" in der Legende.

Grund: Ich erstelle viele Teilmengen eines Datensatzes und möchte, dass die Legenden plotübergreifend standardisiert werden (normalerweise würde ich es begrüßen, wenn nicht verwendete Ebenen automatisch gelöscht werden und keine droplevels () eingegeben werden müssen, aber dies ist die einzige Fall, ich möchte diese ungenutzten Ebenen). Entschuldigung, wenn dies eine Frage ist, die nur für meinen Computer gilt.

Antworten auf die Frage(2)

Eine zweite Möglichkeit ist das explizite Definieren der erforderlichen Einträge mithilfe vonlimits Streit:

<code>ggplot(subset(df,fruit == "apple"),aes(x = year,y = qty,colour = fruit)) + 
    geom_point() + 
    scale_colour_discrete(limits = c("apple", "orange"))
</code>
 zer0hedge04. Sept. 2017, 12:51
Aus bestimmten Gründen funktionierte dies für scale_color_manual () und drop = FALSE nicht
Lösung für das Problem

Ja, Sie möchten hinzufügendrop = FALSE zu Ihrer Farbskala:

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

Ihre Antwort auf die Frage