33

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

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

  • По некоторым причинам это работает для scale_color_manual () и drop = FALSE

    от
  • 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"))