我最近从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(),但这是一个例子)如果我想要那些未使用的级别)。抱歉,这仅是我的计算机本地的问题。

最佳答案

是的,您想将drop = FALSE添加到您的色标中:

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

10-06 10:54