40

最近、バージョン 0.8.9 から ggplot2 0.9.0 にアップグレードしましたが、プロットの凡例には、プロットで使用されている因子レベルのみが表示されるようになりました (未使用のものは省略されています)。凡例にすべての因子レベルを含める前に。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() と入力する必要がないことに感謝しますが、これがその 1 つです)。未使用のレベルが必要な場合)。これが私のコンピューターだけに限定された質問である場合は、お詫び申し上げます。


編集: R 4.0.0 の時点で、上記のコードはdf$fruit要因として aを生成しなくなりggplot、以下の質問と回答の動作が変わることに注意してください。使用を再現するには:

df <- data.frame(
  fruit = factor(rep(c("apple", "orange"), times=11)), 
  year = 1990:2011, 
  qty = rnorm(22, 100, 20)
)
4

2 に答える 2

50

はい、カラー スケールに追加drop = FALSEします。

ggplot(subset(df,fruit == "apple"),aes(x = year,y = qty,colour = fruit)) + 
    geom_point() + 
    scale_colour_discrete(drop = FALSE)
于 2012-04-03T23:04:55.320 に答える