2016-05-31 13 views
3

enter image description here ich mit Flächendiagramm mit ggplot2 plotten möge, aber ich fand, dass mein Ergebnis aus, dass in dem Buch unterscheidet (R Graphics Kochbuch Abbildung 4-22)Wie die Stapelreihenfolge in gestapelten Bereich umkehren Diagramm ggplot2

library(gcookbook)

library(plyr)

ggplot(uspopage, aes(x=Year, y=Thousands, fill=AgeGroup, order=desc(AgeGroup))) + geom_area(colour="black", size=.2, alpha=.4) + scale_fill_brewer(palette="Blues")

die Stapelreihenfolge nicht umgekehrt (in dem Buch, das "> 64" im Boden sein soll) werden könnte. Stimmt etwas nicht in diesem Prozess?

+1

Ich kenne Ihre 'ggplot2' Version nicht, aber mit Version 2.1.0:" Die Reihenfolge Ästhetik ist offiziell veraltet. Es hat nie wirklich funktioniert, und wurde schlecht dokumentiert. " https://github.com/hadley/ggplot2/releases – bVa

+1

Reorder den eigentlichen Datenrahmen, 'uspopage'. Wenn Sie möchten, dass die Legende neu angeordnet wird, können Sie die Reihenfolge der Ebenen umkehren. – joran

+2

Das heißt, 'uspopage $ AgeGroup = factor (uspopage $ AgeGroup, levels = rev (Ebenen (uspopage $ AgeGroup))) ' – Gregor

Antwort

2

Ein Adhoc-Ansatz besteht darin, Ihre Daten neu zu ordnen. Statt

AgeGroup 
     <5  
    5-14  
    15-24 

Sie

wollen
AgeGroup 
>64  
55-64 
45-54 

So könnte man das letzte Element nehmen und es in erster Linie setzen, das zweite letzte Element auf dem zweiten Platz, ... Etwas ähnliches wie c("A", "B", "C", "D")[4:1] passiert, wenn Sie verwenden

swap <- uspopage[nrow(uspopage):1,] 
ggplot(swap, aes(x=Year, y=Thousands, fill=AgeGroup, order=desc(AgeGroup))) + 
geom_area(colour="black", size=.2, alpha=.4) + scale_fill_brewer(palette="Blues") 

2016-06-02: ich habe in Kommentar eine Erklärung nach Anfrage.

+0

Es hat gut funktioniert. Aber könnten Sie eine Erklärung dafür geben? –

Verwandte Themen