2017-05-30 6 views
2

Hinweis: Dies ist eine Folge zu this question.Entfernen der geom_point-Symbole von ggplot2 aus der Legende

Zuerst wird der Code die Daten zu reproduzieren:

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) 

Wenn ich den folgenden Code ggplot2 renne, ich mit diesem Ende:

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

Das Problem hier Das sind die schwarzen Punkte, die den Legendenschlüssel answer aufnehmen. Ich habe versucht, es zu entfernen, die folgende Schicht mit:

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

Und ich bekomme diese:

enter image description here

Ich bin immer noch einen winzigen schwarzen Punkt in der Legende zu bekommen. Was kann ich noch tun, um es vollständig zu entfernen?

+2

Da die 'colour' Legende nur die Linien betrifft, könnten Sie tun:' Führungen (color = guide_legend (override.aes ​​= list (shape = NA))) '. – eipi10

Antwort

2

Sie tun konnte

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

Danke, das würde zur Rechnung passen. Kannst du die Logik hier erklären? Ich verstehe nicht, wie die 'scale_fill_discrete'-Funktion dies behebt. – Phil

+1

Afaik, ggplot2 versucht Skalen mit dem gleichen Namen zu kombinieren (= normalerweise der zugeordnete Variablenname). Hier habe ich die Skalen explizit umbenannt, um drei anstelle von zwei zu erhalten. dann habe ich angegeben, den 3. nicht anzuzeigen. – lukeA

Verwandte Themen