ggtitle Come cambiare l'ordine dei boxplot quando si usa ggplot2?




ggplot labs (2)

Questa domanda segue da quest'altra. Non ero in grado di implementare le risposte lì.

Definire:

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

Tracciare:

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

Mi piacerebbe avere i boxplot nell'ordine inverso (ad esempio uno a destra a sinistra e così via).

Ho provato vari modi di riordinare i fattori usando levels , ordered , relevel , rev e così via, ma semplicemente non riesco a trovare la sintassi giusta.


Answer #1

Hai già accettato una soluzione (perfettamente valida), ma ecco un'altra opzione che usa relevel() . Non sono sicuro del motivo per cui non ha funzionato per te?

#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()


Answer #2

Hai provato questo:

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

Ho appena ricevuto un ordine lì, dal momento che il mio sistema è configurato in modo leggermente diverso da quello che sospetto, quindi il mio "ordine predefinito" potrebbe essere diverso. Ma puoi semplicemente cambiare la posizione dei livelli quando li specifichi.

Alcune altre opzioni, dipendono dai tuoi gusti:

Per invertire semplicemente l'ordine corrente:

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

oppure puoi usare subsetting per specificare un ordine specifico se non vuoi digitare manualmente ogni livello:

factor(df2$variable,levels = levels(df2$variable)[1:2],ordered = TRUE)




r-factor