2013-01-18 4 views
7

Ich verwende die beigefügten Daten, um Boxplot zu erstellen. Datalink https://www.dropbox.com/s/dt1nxnkhq90nea4/GTAP_Sims.csvBei der Verwendung von ggplot die gleiche Reihenfolge wie in Datendateien beibehalten

Bisher habe ich diesen Code, den ich verwende:

# Distribution of EV for all regions under the BASE scenario 

evBASE.f <- subset(ccwelfrsts, tradlib =="BASE") 
p <- ggplot(data = evBASE.f, aes(factor(region), ev)) 
p + geom_boxplot() + 
    theme(axis.text.x = element_text(colour = 'black', angle = 90, size = 16)) + 
    theme(axis.text.y = element_text(colour = 'black', size = 16)) 

es einen Plot wiedergibt, das aussieht: Plot file: /// C:/Users/iouraich/Dokumente /ggplot_Results.htm

Was ich hier suche ist, dass die x-Achse in der Zeichnung die Reihenfolge der Überschrift "Region" in der CSV-Datei übereinstimmen.

Gibt es eine Option innerhalb von ggplot, mit der man das kontrollieren kann?

Vielen Dank

+0

Es gibt ein paar Probleme hier. Erstens können wir nicht sehen, welche Art von Plot Sie anstreben, da der von Ihnen angegebene Link zu einer Datei in Ihrem lokalen System gehört, nicht zu etwas im Netz. Zweitens, während Sie einen Link zu den Daten angegeben haben (danke), ist es eine gute Idee, den Code einzutragen, der die Daten liest, damit wir Ihre Schritte genau reproduzieren können. Drittens, ja, 'ggplot' kann wahrscheinlich tun, was Sie wollen. – SlowLearner

+0

@SlowLearner: Danke für den Ratschlag. Ich werde dies beim nächsten Mal berücksichtigen, wenn ich um Hilfe frage :) – iouraich

Antwort

8

Grundsätzlich brauchen Sie nur region <- factor(region,levels=unique(region)) die Ebene in der Reihenfolge festlegen, in der sie in den Daten erscheinen.

Eine vollständige Lösung basiert Sie auf die Daten zur Verfügung gestellt:

ccwelfrsts <- read.csv("GTAP_Sims.csv") 
## unmangle data 
ccwelfrsts[5:8] <- sapply(ccwelfrsts[5:8],as.numeric) 
evBASE.f <- droplevels(subset(ccwelfrsts, tradlib =="BASE")) 
## reorder region levels 
evBASE.f <- transform(evBASE.f,region=factor(region,levels=unique(region))) 
library(ggplot2) 
theme_set(theme_bw()) 
p <- ggplot(data = evBASE.f, aes(region, ev)) 
p + geom_boxplot() + 
    theme(axis.text.x = element_text(colour = 'black', angle = 90, size = 16)) + 
    theme(axis.text.y = element_text(colour = 'black', size = 16))+ 
    xlab("") 

Sie betrachten könnte die Orientierung des Graphen Schalt (über coord_flip oder durch explizite Umschalten x- und y-Achse Mappings) die Etiketten leichter zu lesen , obwohl das Layout mit der numerischen Antwort auf der y-Achse den meisten Zuschauern vertrauter ist.

+0

Thx viel. Dies macht es einfacher, statt jedes Mal manuell die Reihenfolge innerhalb der aes() zu spezifizieren. – iouraich

Verwandte Themen