2017-05-30 69 views
2

注意:這是this question的後續操作。從圖例中刪除ggplot2的geom_point圖標

首先代碼重現數據:

mydf <- data.frame(year = c(rep(2000, 3), rep(2002, 3), rep(2004, 3), rep(2006, 3), rep(2008, 3), rep(2010, 3), rep(2012, 3), rep(2014, 3), rep(2016, 3)), 
       answer = rep(c("A great deal", "Hardly any", "Only some"), 9), 
       result = c(0.3015940, 0.1399303, 0.5584757, 0.2269548, 0.1792754, 0.5937698, 0.2955301, 0.1309859, 0.5734840, 0.3008197, 0.1344499, 
                0.5647303, 0.1919454, 0.2026290, 0.6054256, 0.1059793, 0.4190533, 0.4749674, 0.1190636, 0.3631279, 0.5178085, 0.1518314, 
                0.3181203, 0.5300483, 0.1424715, 0.3094615, 0.5480669)) 
mydf$year <- factor(mydf$year) 
mydf$answer <- factor(mydf$answer) 

triangles <- data.frame(year = c(2002, 2004, rep(2008, 2), rep(2010, 3), 2012), 
         answer = c(rep("A great deal", 3), "Hardly any", "A great deal", "Only some", rep("Hardly any", 2)), 
         direction = c("Decrease", "Increase", "Decrease", "Increase", rep("Decrease", 2), "Increase", "Decrease"), 
         result = c(0.2269548, 0.2955301, 0.1919454, 0.2026290, 0.1059793, 0.4749674, 0.4190533, 0.3631279)) 
triangles$year <- factor(triangles$year) 
triangles$answer <- factor(triangles$answer) 
triangles$direction <- factor(triangles$direction) 

當我運行下面的代碼ggplot2,我結束了這一點:

ggplot() + 
geom_line(data = mydf, aes(x = year, y = result, colour = answer, group = answer)) + 
geom_point(data = triangles, aes(x = year, y = result, fill = answer, shape = direction), size = 3) + 
scale_shape_manual(values = c(25, 24)) 

enter image description here

這裏的問題是那個佔據了answer傳說關鍵點的黑點。我嘗試使用以下層將其刪除:

guides(fill = guide_legend(override.aes = list(size = 0))) 

而且我得到這個:

enter image description here

我仍然得到傳說中的一個很小的黑點。我還能做些什麼來完全刪除它?

+2

由於'colour'傳說隻影響行,你可以這樣做:'指南(顏色= guide_legend(override.aes =名單(形狀= NA) ))'。 – eipi10

回答

2

你可以做

ggplot() + 
    geom_line(data = mydf, aes(x = year, y = result, colour = answer, group = answer)) + 
    geom_point(data = triangles, aes(x = year, y = result, fill = answer, shape = direction), size = 3) + 
    scale_shape_manual(values = c(25, 24), name = "direction") + 
    scale_color_discrete(name = "answer") + 
    scale_fill_discrete(name = "c", guide = "none") 

enter image description here

+0

謝謝,這將符合法案。你能解釋一下這裏的邏輯嗎?我不理解'scale_fill_discrete'函數如何解決這個問題。 – Phil

+1

Afaik,ggplot2試圖將具有相同名稱的比例(通常是映射的變量名稱)組合起來。在這裏,我明確地將比例尺重新命名爲三個而不是兩個;然後我指定不顯示第三個。 – lukeA