Wygląda na to, że chcesz je narysować w dowolnej kolejności na podstawie 50% wartości każdego wykresu pudełkowego? Biorąc inny dataframe jako przykład:
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))
Gdybyśmy działki to widzimy, że etykiety są pomieszane (A przychodzi przed *).
library(ggplot2)
ggplot(temp) +
geom_bar(stat="identity", aes(x=Grade, y=n))
Mogliśmy zamówić to ręcznie, jak pokazano powyżej, lub może zdecydujemy się wykreślić klas w kolejności liczby studentów coraz każdego gatunku. Można to również zrobić ręcznie, ale byłoby lepiej, gdybyśmy mogli zautomatyzować ten:
najpierw my zamówić dataframe:
library(dplyr)
temp <- temp %>% arrange(n)
Następnie zmieniamy poziom wewnątrz kolumny Grade
reprezentować Zakon dane
temp$Grade <- as.vector(temp$Grade) #get rid of factors
temp$Grade = factor(temp$Grade,temp$Grade) #add ordered factors back
Uruchomienie tego samego polecenia graficznego pokazanego powyżej daje dane naniesione z inaczej uporządkowaną osią x.
Więcej dyskusja tutaj: http://stackoverflow.com/questions/11587111/setting-levels-when-creating-a-factor-vs-levels – harkmug