Вопрос по r, ggplot2 – ggplot2 0.9.0 автоматически отбрасывает неиспользуемые уровни факторов из легенды сюжета?

33

Недавно я обновился до ggplot2 0.9.0 с версии 0.8.9, и теперь я получаю, что мои легенды сюжета показывают только уровни факторов, использованные на графике (он не включает неиспользованные). Перед тем как включить все условные уровни в легенду. Я использую Windows 7 и R 2.15.0 (2.14.2 до сегодняшнего дня).

Кто-нибудь еще находит это тоже? Есть ли способ, которым я могу получить неиспользованные уровни факторов для отображения в легенде своего сюжета?

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 () раньше давал мне оба «яблока» и "оранжевый" в легенде (хотя для «яблока» были только точки). Теперь я получаю только «яблоко» в легенде.

Причина этого возникла - я делаю много графиков подмножеств набора данных, и я хочу, чтобы условные обозначения были стандартизированы по графикам (обычно я ценю то, что неиспользуемые уровни автоматически отбрасываются и не нужно вводить droplevels (), но это один на случай я хочу эти неиспользованные уровни). Извиняюсь, если это вопрос только для моего компьютера.

Ваш Ответ

2   ответа
39

Да, вы хотите добавитьdrop = FALSE к вашей цветовой гамме:

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

мощьюlimits аргумент:

ggplot(subset(df,fruit == "apple"),aes(x = year,y = qty,colour = fruit)) + 
    geom_point() + 
    scale_colour_discrete(limits = c("apple", "orange"))
По некоторым причинам это работает для scale_color_manual () и drop = FALSE

Похожие вопросы