2010-08-12 11 views
5

Ich möchte die Stapelreihenfolge der Krankenhäuser im Diagramm unten ändern, also # 1 ist an der Spitze und # 4 an der Unterseite.ggplot: Wie kann man die vertikale Reihenfolge mehrerer Boxplots angeben?

Das Diagramm wurde produziert mit

ggplot(survey,aes(x=hospital, y=age))+geom_boxplot()+coord_flip()+xlab("")+ylab ("\nPatient Age") 

und ich brauche die top-> nach unten, um das Gegenteil von dem zu sein, was jetzt ist. Ich bin mir nicht sicher, warum es so kommt, wie es jetzt ist. Die "Krankenhaus" -Spalte ist ein Faktor, falls es darauf ankommt.

Vielen Dank!

alt text

Antwort

10

Sie haben ein paar Optionen. Am einfachsten wäre hinzuzufügen

p + scale_x_reverse() 

zu der Handlung. Sie könnten auch die Stufen des Faktors umkehren

relevel(survey$hospital, rev(levels(survey$hospital))) -> survey$hospital 

Oder Sie bestellen Sie die Boxen mit xlim()

p + xlim("Hospital #4","Hospital #3","Hospital #2","Hospital #1") 
+0

Semantisch von Hand wollen bestimmen könnte, ich glaube, die zweite Option am besten ist. Es trennt die Manipulation der Form der Daten von dem Zeichencode. –

+0

Die erste gibt einen Fehler aus: Fehler: Nicht kontinuierliche Variable an scale_x_reverse geliefert. Zusätzlich: Warnmeldung: In Op.factor (x): - nicht sinnvoll für Faktoren aber die dritte funktionierte gut. Ich habe sie nicht rezentriert, denn wenn ich die Umfrage $ spital ausstelle, sind sie bereits in der natürlichen Reihenfolge eingeebnet (1, 2, 3, 4). – wishihadabettername

+1

Ich denke 'scale_x_reverse' ist nur für kontinuierliche Werte gedacht. –

Verwandte Themen