Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Да, вы хотите добавить drop = FALSE в свою цветовую гамму:

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

Ответ 2

Второй способ заключается в явном определении требуемых записей с помощью аргумента limits:

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