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