我最近从版本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(),但这是我希望那些未使用的水平的一个案例)。如果这只是我的电脑本地问题,请道歉。
答案 0 :(得分:39)
是的,您想要将drop = FALSE
添加到您的色标中:
ggplot(subset(df,fruit == "apple"),aes(x = year,y = qty,colour = fruit)) +
geom_point() +
scale_colour_discrete(drop = FALSE)
答案 1 :(得分:4)
第二种方法是使用limits
参数显式定义所需的条目:
ggplot(subset(df,fruit == "apple"),aes(x = year,y = qty,colour = fruit)) +
geom_point() +
scale_colour_discrete(limits = c("apple", "orange"))