2017-01-30 68 views
1

我想要子集我的數據,但保持使用所有數據時產生的着色。將子集數據保持着色

這裏是所有的數據:

ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) + 
    geom_point(shape = 21, aes(fill = Species), size=4, stroke=1) 

這將產生:

enter image description here

但如果我子集上的物種,如錦葵,顏色不會保留:

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) 

enter image description here

據我所知,這可能是正確的默認行爲,但我想維護用於演示目的的配色方案。我將如何實現這一目標?

加成:保持相同的軸線的尺寸以及

+0

使用'scale_fill_ *'函數指定什麼顏色什麼價值,例如去'scale_fill_manual(values = c('virginica'='dodgerblue'))' – alistaire

回答

3

的一種方法是使用由scale_fill_manual作爲@alistaire建議。另一種方法是防止下降因素水平,但儘管沒有每個級別的數據,但會有傳說中級別的名稱,但不確定是否需要這樣做。但是,無論您選擇哪個子集,都可以全面瞭解數據集。

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) 

enter image description here

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) 

enter image description here