Comment changer l'ordre des boxplots en utilisant ggplot2?

cette question découle de cette autre . J'ai été incapable de mettre en œuvre des réponses.

Définir:

df2 <- data.frame(variable=rep(c("vnu.shr","vph.shr"),each=10),
        value=seq(1:20))

Plot:

require(ggplot2)
qplot(variable,value, data=df2,geom="boxplot")+
geom_jitter(position=position_jitter(w=0.1,h=0.1))

je voudrais avoir les boxplots dans l'ordre inverse (par exemple, l'un à droite, à gauche et ainsi de suite).

j'ai essayé différentes façons de réorganiser les facteurs en utilisant levels, ordered,relevel,rev et ainsi de suite, mais je n'arrive pas à avoir la bonne syntaxe.

16
demandé sur Community 2011-07-29 04:33:38

2 réponses

Avez-vous essayé ceci:

df2$variable <- factor(df2$variable,
    levels = c('vph.shr','vnu.shr'),ordered = TRUE)

j'ai juste choisi une commande ici, puisque mon système est configuré un peu différemment que le vôtre je soupçonne, donc mon "ordre par défaut" peut différer. Mais vous pouvez simplement changer la position des niveaux en les spécifiant.

quelques autres options, en fonction de vos goûts:

juste Pour inverser le courant de la commande:

factor(df2$variable,levels = rev(levels(df2$variable)),ordered = TRUE)

ou vous pouvez utiliser. pour spécifier un classement spécifique si vous ne voulez pas taper chaque niveau à la main:

factor(df2$variable,levels = levels(df2$variable)[1:2],ordered = TRUE)
36
répondu joran 2011-07-29 00:49:48

vous avez déjà accepté une solution (parfaitement correcte), mais voici une autre option utilisant relevel(). Je ne sais pas pourquoi ça ne marchait pas pour toi?

#default plot
ggplot(df2, aes(variable, value)) + geom_boxplot()

enter image description here

#Reverse reverse!
df2$variable2 <- with(df2, relevel(variable, "vph.shr"))
ggplot(df2, aes(variable2, value)) + geom_boxplot()

enter image description here

5
répondu Chase 2011-07-29 01:12:00