2010-08-12 13 views
5

Me gustaría cambiar el orden de apilamiento de los hospitales en el siguiente diagrama para que el # 1 esté en la parte superior y el # 4 en la parte inferior.ggplot: ¿cómo especificar el orden vertical de múltiples diagramas de caja?

El diagrama fue producido con

ggplot(survey,aes(x=hospital, y=age))+geom_boxplot()+coord_flip()+xlab("")+ylab ("\nPatient Age") 

y necesito la parte superior-> abajo con el fin de ser a la inversa de lo que es ahora. No estoy seguro de por qué sucede así. La columna 'hospital' es un factor en caso de que importe.

¡Muchas gracias!

alt text

Respuesta

10

usted tiene algunas opciones. Lo más fácil sería agregar

p + scale_x_reverse() 

a la trama. También podría revertir los niveles del factor

relevel(survey$hospital, rev(levels(survey$hospital))) -> survey$hospital 

O bien, puede determinar el orden que desee las cajas a mano con xlim()

p + xlim("Hospital #4","Hospital #3","Hospital #2","Hospital #1") 
+0

Semánticamente, creo que la segunda opción es la mejor. Se separa la manipulación de la forma de los datos del código de trazado. –

+0

El primero da un error: Error: variable no continua suministrada a scale_x_reverse. Además: Mensaje de advertencia: En Ops.factor (x): - no significativo para los factores pero el tercero funcionó bien. No los revelé porque si visualizo survey $ hospital, ya están nivelados en el orden natural (1, 2, 3, 4). – wishihadabettername

+1

Creo que 'scale_x_reverse' solo está destinado a valores continuos. –

Cuestiones relacionadas