mehrere Zeilen, die jeweils auf einem anderen Datenrahmen in ggplot2 basieren - automatische Färbung und Legende

9

Angenommen, ich habe die folgenden Datenrahmen:

%Vor%

Ich möchte diese als Linien in demselben Diagramm / Panel darstellen. Ich kann das tun, indem ich

%Vor%

All dies wird schwarz sein. Wenn ich sie in einer anderen Farbe haben möchte, kann ich die Farbe explizit als Argument für geom_line() angeben. Meine Frage ist, kann ich eine Liste von ein paar Farben, sagen wir 5 Farben, wie, rot, blau, grün, orange, grau, und verwenden Sie diese Liste, so dass ich nicht explizit die Farben als Argument für geom_line angeben müssen () bei jeder Zeile. Wenn das Diagramm p 2 geom_line () -Anweisungen enthält, werden diese entsprechend rot und blau dargestellt. Wenn es 3 geom_line-Anweisungen enthält, werden sie rot, blau und grün gefärbt. Schließlich, wie kann ich die Legende für diese Diagramme angeben. Auch wenn ich am Ende von p die Farben als Vektor geben kann, wäre das toll. Bitte lassen Sie mich wissen, wenn die Frage nicht klar ist.

Danke.

    
Curious2learn 29.06.2011, 19:05
quelle

3 Antworten

12

ggplot2 funktioniert am besten, wenn Sie mit einem geschmolzenen data.frame arbeiten, das eine andere Spalte enthält, um die unterschiedliche Ästhetik anzugeben. Das Schmelzen ist einfacher mit allgemeinen Spaltennamen, also würde ich dort anfangen. Hier sind die Schritte, die ich ergreifen würde:

  • Benenne die Spalten um
  • schmilzt die Daten, die eine neue Variable hinzufügen, die wir der Farbästhetik zuordnen
  • Definieren Sie Ihren Farbvektor
  • Geben Sie die entsprechende Skala mit scale_colour_manual
  • an

'

%Vor%

Aus Gründen der Klarheit bearbeitet

Die Struktur von newData :

%Vor%

Und die Handlung selbst:

    
Chase 29.06.2011, 19:31
quelle
4

Diese Art von Fragen werden viel einfacher zu lösen, wenn Sie Ihr Denken an die Art anpassen, wie sich ggplot2 der Grafik nähert. ggplot2 ist um die Idee herum organisiert, dass alles, was in Ihrem Graphen erscheint, im Prinzip als eine Spalte in Ihrem Datenrahmen existieren sollte. (Es gibt natürlich Ausnahmen, aber das ist die allgemeine Idee.)

Ihr Versuch, dieses Diagramm Stück für Stück, Zeile für Zeile, aus verschiedenen Datenrahmen zu erstellen und dann ihnen Farben zuzuweisen, ist sehr un ggplot2 ish. Wenn Sie Objekte in Ihrem Diagramm mit verschiedenen Farben beschriften möchten, sollte Ihr erster Gedanke immer lauten:

  

Wie kann ich diese Informationen zur Farbbeschriftung als Variable kodieren?

In diesem Fall ist die Lösung ziemlich einfach. Einfach rbind deine drei Datenrahmen zusammen (du musst sicherstellen, dass die Spaltennamen zuerst zusammenpassen) und eine neue Spalte erstellen, sagen wir grp , die drei Ebenen hat, die deinen drei Datenrahmen entsprechen:

%Vor%

und dann map die Variable grp auf die ästhetische Farbe im ggplot-Aufruf:

%Vor%

Wenn Sie die Standardfarben nicht mögen, können Sie Ihre eigene Farbe mit scale_colour_manual :

angeben %Vor%

oder Sie können einige nette "vorausgewählte" Paletten von scale_colour_brewer verwenden.

EDIT: Ich habe einen Tippfehler oben korrigiert, um sicherzustellen, dass grp ein Faktor ist. Hier ist meine endgültige Version:

%Vor%     
joran 29.06.2011 19:27
quelle
0

Sie müssen nicht schmelzen, gruppieren oder sammeln. Es ist ziemlich einfach. Fügen Sie einfach die Farbe zur geom_line

hinzu %Vor%

    
Kathiravan Meeran 17.01.2018 11:10
quelle

Tags und Links