我希望对数据进行分组,但保留使用所有数据时生成的着色。
以下是所有数据:
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(shape = 21, aes(fill = Species), size=4, stroke=1)
产生:
但如果我在物种上进行子集,例如virginica,则颜色不会被保留:
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(data = subset(iris, Species=='virginica'),
shape = 21, aes(fill = Species), size=4, stroke=1)
我知道这可能是正确的默认行为,但我想保留配色用于演示目的。我怎么做到这一点?
奖励:保持相同的轴尺寸
答案 0 :(得分:3)
一种方法是使用@alistaire建议的scale_fill_manual
。另一种方法是防止丢弃因子级别,但是尽管每个级别都没有数据,但是这些级别的名称将包含在图例中,不确定是否需要。但无论您选择哪个子集,这都将提供数据集的完整图片。
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(shape = 21, aes(fill = Species), size=4, stroke=1)
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(data = subset(iris, Species %in% c('virginica', 'setosa')),
shape = 21, aes(fill = Species), size=4, stroke=1) +
scale_fill_discrete(drop = FALSE)
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(data = subset(iris, Species=='virginica'),
shape = 21, aes(fill = Species), size=4, stroke=1) +
scale_fill_discrete(drop = FALSE)