ggplot legends – Ändern Sie Labels, Reihenfolge und Titel

Ich kämpfe sehr viel, um die Legende in meiner Handlung zu ändern. Hier ist ein reproduzierbares Beispiel:

dtt <- structure(list(model = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("ma", "mb", "mc"), class = "factor"), year = c(2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L), V = c(0.16, 0.14, 0.11, 0.13, 0.15, 0.16, 0.24, 0.17, 0.12, 0.13, 0.15, 0.15, 0.2, 0.16, 0.11, 0.12, 0.12, 0.15), lower = c(0.11, 0.11, 0.07, 0.09, 0.11, 0.12, 0.16, 0.12, 0.04, 0.09, 0.09, 0.11, 0.14, 0.1, 0.07, 0.08, 0.05, 0.1), upper = c(0.21, 0.19, 0.17, 0.17, 0.19, 0.2, 0.29, 0.23, 0.16, 0.17, 0.16, 0.2, 0.26, 0.27, 0.15, 0.16, 0.15, 0.19)), .Names = c("model", "year", "V", "lower", "upper"), class = "data.frame", row.names = c(NA, -18L)) 

Mein Plot wird folgendermaßen generiert:

 ggplot(dtt, aes(x=year, y=V, group = model, colour = model, ymin = lower, ymax = upper)) + geom_ribbon(alpha = 0.35, linetype=0)+ geom_line(aes(linetype=model), size = 1.5) + geom_point(aes(shape=model), fill = "white", size = 4) + theme(legend.position=c(.6,0.8)) + theme(legend.background = element_rect(colour = 'black', fill = 'grey90', size = 1, linetype='solid')) 

was das bewirkt: Bildbeschreibung hier eingeben

Nun, was ich gerne machen würde ist

  1. Ändern Sie den Titel der Legende
  2. Ändern Sie die Reihenfolge, in der die Legendenelemente angezeigt werden
  3. Ändern Sie den Text der Legendenelemente.

Ich habe stundenlang herumgetüftelt, aber ohne viel Erfolg. Das Beste, was ich bisher geschafft habe, ist folgendes hinzuzufügen:

 scale_colour_hue(name = "Model 1", breaks=c("mb", "ma", "mc"), labels=c("MBB", "MAA", "MCC")) 

Aber es erzeugt diese Abscheulichkeit: Bildbeschreibung hier eingeben

Wie Sie sehen, gibt es jetzt eine zusätzliche, nicht benötigte Legende, und die Formen in der Legende stimmen nicht mit denen in der Handlung überein!

Schließlich möchte ich Grafiken in der Legende zeigen, dass die blauen und grünen Linien gestrichelt sind, nicht solide – aber ich habe überhaupt keine Ahnung, wie das geht.

Jede Hilfe würde sehr geschätzt,

Sie müssen zwei Dinge tun:

  1. Benennen Sie die Faktorstufen vor dem Plot um und ordnen Sie sie neu
  2. Benennen Sie den Titel jeder Legende in den gleichen Titel um

Der Code:

 dtt$model < - factor(dtt$model, levels=c("mb", "ma", "mc"), labels=c("MBB", "MAA", "MCC")) library(ggplot2) ggplot(dtt, aes(x=year, y=V, group = model, colour = model, ymin = lower, ymax = upper)) + geom_ribbon(alpha = 0.35, linetype=0)+ geom_line(aes(linetype=model), size = 1) + geom_point(aes(shape=model), size=4) + theme(legend.position=c(.6,0.8)) + theme(legend.background = element_rect(colour = 'black', fill = 'grey90', size = 1, linetype='solid')) + scale_linetype_discrete("Model 1") + scale_shape_discrete("Model 1") + scale_colour_discrete("Model 1") 

Bildbeschreibung hier eingeben

Aber ich denke, das ist wirklich hässlich und schwer zu interpretieren. Es ist viel besser, Facetten zu verwenden:

 ggplot(dtt, aes(x=year, y=V, group = model, colour = model, ymin = lower, ymax = upper)) + geom_ribbon(alpha=0.2, colour=NA)+ geom_line() + geom_point() + facet_wrap(~model) 

Bildbeschreibung hier eingeben