2013-05-16 7 views

Antwort

9

Sie müssen nur die Ebenen Ihres Faktors in der von Ihnen gewünschten Reihenfolge angeben. Also hier erstelle ich eine neue Variable x1

x1 = factor(x, levels=c("B", "C", "A")) 

wo

R> x1 
[1] B B B A A A C C C 
Levels: B C A 

Die plot Funktion funktioniert nun wie erwartet.

+0

Weitere Diskussion hier: http://stackoverflow.com/questions/11587111/setting-levels-when-creating-a-factor-vs-levels – harkmug

2

Es sieht so aus, dass Sie sie in irgendeiner Form der Reihenfolge, basierend auf dem 50% -Wert jedes Boxplots, plotten wollen? Unter einem anderen Datenrahmen als Beispiel:

temp <- structure(list(
    Grade = c("U","G", "F", "E", "D", "C", "B", "A", "A*"), 
    n = c(20L, 13L, 4L, 13L, 36L, 94L, 28L, 50L, 27L)), 
    .Names = c("Grade", "n"), 
    class = c("tbl_df", "data.frame"), 
    row.names = c(NA, -9L)) 

Wenn wir das Grundstück, wir, dass die Etiketten durcheinander sind sehen (A vor A * kommt).

library(ggplot2) 
ggplot(temp) + 
geom_bar(stat="identity", aes(x=Grade, y=n)) 

enter image description here

Wir könnten dies manuell bestellen, wie oben gezeigt, oder wir könnten entscheiden die Noten in der Reihenfolge der Anzahl der Schüler zu zeichnen jede Klasse zu bekommen. Dies kann auch manuell durchgeführt werden, aber es wäre besser, wenn wir diese automatisieren könnte:

Zuerst haben wir die Datenrahmen bestellen:

library(dplyr) 
temp <- temp %>% arrange(n) 

Dann ändern wir die Ebenen innerhalb der Grade Spalte die Reihenfolge der repräsentieren Daten

Wenn Sie denselben Grafikbefehl wie oben gezeigt ausführen, erhalten Sie Daten mit einer anders geordneten X-Achse.

enter image description here

Verwandte Themen