2012-04-03 17 views
28

Son zamanlarda ggplot2 0.9.0 'dan 0.8.9 sürümüne geçtim ve şimdi arsa efsanelerimin sadece arsada kullanılan faktör seviyelerini göstermesini sağlıyorum (kullanılmayanları ihmal ediyor). Daha önce efsanedeki tüm faktör seviyelerini içermelidir. Windows 7 ve R 2.15.0 (bugün 2.14.2) çalışıyorum.ggplot2 0.9.0 otomatik olarak kullanılmayan faktör seviyelerini arsa efsanesinden mi siliyor?

Bunu başka biri de var mı? Kullanılmayan faktör seviyelerini arsa efsanesinde gösterebileceğim bir yol var mı?

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) 

("elma" için sadece noktalar olmalarına rağmen) efsanede bana "elma" ve "turuncu" hem verirdi qplot(). Şimdi sadece efsaneye "elmayı" alıyorum.

Bunun ortaya çıkması nedeni - Veri kümesinin alt kümeleri için çok sayıda çizim yapıyorum ve efsanelerin grafikler arasında standartlaştırılmasını istiyorum (normalde kullanılmayan düzeylerin otomatik olarak düştüğünü ve droplevels() yazmak zorunda kalmamasını takdir ediyorum, ancak Bu kullanılmayan seviyeleri istiyorum bir durumdur). Bu sadece bilgisayarım için yerel bir soru ise özür dilerim.

cevap

32

Evet, renk ölçeğine drop = FALSE eklemek istiyorum:

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

İkinci yöntem ise açıkça limits argüman kullanarak gerekli girdileri tanımlamaktır: Bazı nedenlerden dolayı

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

, bu scale_color_manual() için çalıştı ve drop = FALSE vermedi – zer0hedge

İlgili konular