Cette question découle de cet autre n . Je n'ai pas pu mettre en œuvre les réponses là-bas.
Définir:
df2 <- data.frame(variable=rep(c("vnu.shr","vph.shr"),each=10),
value=seq(1:20))
Terrain:
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, 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 tout simplement pas à obtenir la syntaxe droite.
Avez-vous essayé ceci:
df2$variable <- factor(df2$variable,
levels = c('vph.shr','vnu.shr'),ordered = TRUE)
Je viens de choisir une commande, car mon système est configuré légèrement différemment du vôtre, je suppose, donc ma `` commande par défaut '' peut différer. Mais vous pouvez simplement changer la position des niveaux lorsque vous les spécifiez.
Quelques autres options, selon vos goûts:
Pour inverser simplement l'ordre actuel:
factor(df2$variable,levels = rev(levels(df2$variable)),ordered = TRUE)
ou vous pouvez utiliser le sous-ensemble pour spécifier un ordre 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 bien), mais voici une autre option en utilisant relevel()
. Je ne sais pas pourquoi cela ne fonctionnait pas pour vous?
#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()