2016-07-25 11 views
2

我需要將變量和此變量的子集繪製到一個圖形中,並且我會與圖例的位置一起努力。請參閱以下MWE:使用子集時添加圖例

library(ggplot2) 

ggplot(data = cars, aes(x = speed)) + 
    geom_line(stat = "density", colour = "red", size = 1) + 
    geom_area(stat = "density", fill = "red", alpha = 0.3) + 
    geom_line(data = subset(cars, dist > 50), stat = "density", colour = "blue", size = 1) + 
    geom_area(data = subset(cars, dist > 50), stat = "density", fill = "blue", alpha = 0.3) 

enter image description here

請注意,它不是incluce在美學這個fill = dist > 50將數據分成兩個不同的部分選項。但第一個geom_linegeom_area必須不僅包含那些值與dist <= 0,但所有值來自數據。

因此,我在geom的手動指定顏色。但是,我現在如何添加一個圖例?我寧願只包括兩個geom_line's。

我試過scale_color_manual,但沒有使它起作用(如果這是要走的路,無論如何?)。

有什麼建議嗎?

編輯:我改變了代碼,以顯示一個工作最小的例子。

+2

http://stackoverflow.com/questions/5963269/how-to-make-a-great -r-reproducible-example – shayaa

回答

2

最好是外ggplot準備數據,參見實施例:

# data prep 
plotDat <- rbind(
    data.frame(Group = "Full Data", cars), 
    data.frame(Group = "Subset Data", cars[cars$speed < 15, ])) 

library(ggplot2) 
ggplot(plotDat, aes(x = speed, col = Group, fill = Group)) + 
    geom_density(alpha = 0.3) 

enter image description here

+1

我剛剛意識到這不是我的問題的答案,因爲您的建議中的圖可以堆積密度圖。因此,這是完全不同的圖表。 我添加了'position =「dodge」'到'geom_area'來獲得我正在尋找的圖表。謝謝你的想法。 –

+0

@der_grund正確,使用錯誤的繪圖功能,請參閱編輯。 – zx8754

+0

這比我的(編輯)評論更好。 –