2012-04-03 12 views
28

私は最近ggplot2 0.9.0をバージョン0.8.9からバージョン0.8.9にアップグレードしましたが、私のプロットの凡例はプロットで使用されている因子レベルのみを表示しています(未使用のものは省略しています)。凡例にすべての因子レベルを含める前に。私はWindows 7とR 2.15.0(今日までは2.14.2)を実行しています。ggplot2 0.9.0未使用の因子レベルをプロットの凡例から自動的に削除しますか?

誰もこれを見つけていますか?私のプロットの凡例に表示される未使用の因子レベルを得る方法はありますか?

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()。今私は伝説の中で「りんご」を得るだけです。

私はデータセットのサブセットのプロットをたくさん作成しています。プロット間で凡例を標準化したいと思います(通常、使用されていないレベルは自動的にドロップされ、これは私がそれらの未使用レベルを望む1つのケースです)。これが私のコンピュータのローカルの質問である場合はお詫び申し上げます。

答えて

32

はい、あなたはカラースケールにdrop = FALSEを追加したい:

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

第二の方法は、明示的にlimits引数使用して、必要な項目を定義することです:いくつかの理由から

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

を、これはscale_color_manual()およびdrop = FALSEで機能しませんでした – zer0hedge

関連する問題