2016-08-11 18 views
5

我有來自兩個不同數據幀的數據。我正在嘗試爲每個數據框創建圖例。我知道我可以結合數據框並做到這一點,但是由於我的數據源,從兩個不同的數據框進行繪圖是最有意義的。當兩個數據幀構建圖時ggplot傳說

請在下面找到簡化示例。我已經接近了,但傳說中的「主要預測」只是白色。我想要顯示「主要預測」在外側是紅色還是在內側是白色。

x = seq(1,10, 1) 
y = seq(10,100, 10) 

df = data.frame(x=x, y=y) 
df2 = data.frame(x=5, y=50) 

p = ggplot(data=df) + 
    geom_point(data=df,aes(x=x, y=y, color="Weekly Forecast"), fill="red", size=5, shape=16) + 
    geom_line(data=df,aes(x=x, y=y), color="red", size=1) + 
    geom_point(data=df2, aes(x=x, y=y, color="Main Forecast"), size=2, shape=16) + 
    scale_color_manual("Legend Title", breaks=c("Weekly Forecast", "Main Forecast"), values = c("white","red")) 
p 

任何援助將不勝感激。

+1

不要把'數據= df'in了'ggplot()'調用,只是讓他們在geoms – Phil

回答

2

您需要使用其中一個符號進行填充(pch = 21:25)。然後您需要使用override.aes來獲得正確的圖例。我已將共享數據和aes移入ggplot命令。

ggplot(data=df, aes(x=x, y=y)) + 
    geom_point(aes(color="Weekly Forecast"), shape=16, size = 5) + 
    geom_line(color="red", size=1) + 
    geom_point(data=df2, aes(color="Main Forecast"), shape=21, fill = "white", size = 5) + 
    scale_color_manual("Legend Title", limits=c("Weekly Forecast", "Main Forecast"), values = c("red","red")) + 
    guides(colour = guide_legend(override.aes = list(pch = c(16, 21), fill = c("red", "white")))) 

這也可以不override.aes完成:

ggplot(data=df, aes(x=x, y=y)) + 
    geom_line(aes(color="Main Forecast"), size=1) + 
    geom_point(aes(color="Weekly Forecast", fill="Weekly Forecast"), shape=21, size = 5) + 
    geom_point(data=df2, aes(color="Main Forecast", fill="Main Forecast"), shape=21, size = 5) + 
    scale_color_manual(name="", values = c("red","red")) + 
    scale_fill_manual(name="", values=c("white","red"))