2015-07-24 13 views
8

Ich erstelle ein sehr einfaches Diagramm, das Daten gruppiert und die Gruppierungsvariable verwendet, um Linienstyle und Farbe zu bestimmen. Ich überschreibe dann diejenigen mit 'scale_linetype_manaul' und 'scale_colour_manual'. So weit, so gut, aber wenn ich versuche, Legendenbeschriftungen oder ihren Titel zu ändern, teilt sich die Legende in zwei Teile: einen für den Linientyp und einen für die Farbe. Ich möchte nur eine Legende, aber mit den benutzerdefinierten Etiketten und Titel.Einzelne Legende bei Verwendung von Gruppe, Linientyp und Farbe in ggplot2?

Nach this question, habe ich darauf geachtet, beide Maßstabsobjekte gleich zu benennen, aber das scheint nicht zu helfen.

Minimal Beispiel:

X <- data.frame(TPP=factor(c(1,5,10,1,5,10,1,5,10)), 
       value=c(-0.035819, 0.003356, 0.066091, -0.028039, 0.004333, 0.060292, -0.023115, 0.005661, 0.058821), 
       horizon=c(1,1,1,2,2,2,3,3,3)) 
ggplot(X, aes(x=horizon, y=value, group=TPP, col=TPP, linetype=TPP))+ 
    geom_line(size=1)+ 
    scale_linetype_manual(name="X", values = c("solid","dashed", "dotted")) + 
    scale_color_manual(name="X", values = c("black", "red", "blue"), labels=c("Low", "5","High")) 

Daraus ergeben sich folgende figure mit zwei Legenden. Wie kann ich diese Legenden mit benutzerdefinierten Labels und einem Titel neu kombinieren?

+0

Möchten Sie die unerwünschte Legende entfernen, wie 'guide =" none "' in einem/beiden Ihrer 'scale _...()' Aufrufe zu verwenden? – tospig

Antwort

12

helfen Dies könnte:

ggplot(X, aes(x=horizon, y=value, group=TPP, col=TPP, linetype=TPP))+geom_line(size=1)+ 
    scale_linetype_manual(name="X", values = c("solid","dashed", "dotted"),labels=c("Low", "5","High")) + 
    scale_color_manual(name ="X", values = c("black", "red", "blue"),labels=c("Low", "5","High")) 

enter image description here

Wenn die in scale_color_manual und in scale_linetype_manual definierten Etiketten unterschiedlich sind, oder wenn sie in nur einer von ihnen angegeben sind, werden Sie zwei verschiedene Legenden zu erhalten.

+0

Danke, war nicht bewusst, dass Sie die Etiketten replizieren müssen, um eine Duplizierung der Legende zu vermeiden. – Thijs