2016-11-11 4 views
1

Ich habe gerade angefangen, ggplot2 zu erkunden, und ich habe derzeit kein Verständnis für die AES-Objekte, die es so häufig verwendet. Ich habe mehrere Ansätze zur Lösung dieses Problems ausprobiert, aber es hat nicht funktioniert. Jede Hilfe würde sehr geschätzt werden!Wie erhält man ein gestapeltes Flächendiagramm für einen kategorisierten Datenrahmen?

Also, ich habe einen Datenrahmen, die ich von der grafischen Darstellung speziell für den Zweck klassifiziert haben, die etwa wie folgt aussieht:

> ggplotframe[1:8,] 
    gamma weights assets 
1 0.002 0.25  1 
2 0.002 0.25  2 
3 0.002 0.25  3 
4 0.002 0.25  4 
5 0.004 0.25  1 
6 0.004 0.25  2 
7 0.004 0.25  3 
8 0.004 0.25  4 

Nun, ich möchte ein gestapeltes Flächendiagramm zeichnen, die weights Anzeige für jeden asset, wie der gamma variiert. Da in diesem Beispiel vier Assets vorhanden sind, gibt es vier verschiedene Gewichtungen für jeden Wert von gamma, einen für jedes Asset, und sie werden über Hunderte solcher Werte getestet.

nun die Ansätze, die ich versucht habe, ist:

gg <- ggplot(ggplotframe, aes(x=gamma, y=weights)) 
gg <- gg + geom_area(aes(colour=assets, fill=assets)) 
gg 

Aber in diesem Fall blinkt die Konsole die Fehler: Error in f(...) : Aesthetics can not vary with a ribbon. Wie kann ich dieses Problem beheben?

+0

Versuchen Sie, Vermögenswerte in einen Faktor zu verwandeln. Momentan versucht es, einen Bereich zu erstellen, und denkt, dass es die Farbe und die Füllung dieses Bereichs durch eine kontinuierliche Variable ändern muss, und ggplot unterstützt dies nicht. – Axeman

+0

Vielen Dank, @Axeman! Aber die unten angegebene Antwort funktioniert besser für mich, da ich den Datenrahmen auch für andere Sortiermethoden verwende. :) –

+0

Ja, OK, es ist das gleiche. – Axeman

Antwort

0

Sie müssen die Spalte "Assets" nicht unbedingt in einen expliziten Faktor umwandeln, Sie können dies innerhalb des Ggplot-Aufrufs tun, indem Sie factor() um fill in geom_area platzieren.

gg <- ggplot(ggplotframe, aes(x = gamma, y = weights)) 
gg <- gg + geom_area(aes(colour = factor(assets), fill = factor(assets))) 
gg 
+0

Gern geschehen, denken Sie daran, dies als die Antwort zu akzeptieren, wenn Sie zufrieden sind. –

+0

Ich habe eine andere Frage. Für mehr als eine bestimmte Anzahl von Assets erhalte ich den folgenden Fehler: Die Ästhetik muss entweder die Länge 1 oder die gleiche sein wie die Daten (3493): Farbe, Füllung, x, y. Irgendeine Idee, wie man dieses Problem löst? –

+0

Achten Sie darauf, auch Faktor (Assets) in Farbe hinzuzufügen. Dieser Fehler wird durch eine ungleiche Teilmenge der Daten verursacht, wenn versucht wird, der Ästhetik zu entsprechen. –

Verwandte Themen