Saltar al contenido

¿Cómo se ordenan los colores de relleno dentro de ggplot2 geom_bar?

Este grupo de expertos despúes de ciertos días de investigación y recopilación de de información, dimos con los datos necesarios, esperamos que resulte útil para ti en tu plan.

Solución:

A partir de ggplot2_2.0.0, el order la estética ya no está disponible. Para obtener un gráfico con las pilas ordenadas por color de relleno, simplemente puede ordenar el conjunto de datos por la variable de agrupación por la que desea ordenar.

a menudo uso arrange desde dplyr para esto. Aquí estoy ordenando el conjunto de datos por el fill factor dentro del ggplot llame en lugar de crear un conjunto de datos ordenado, pero cualquiera de los dos funcionará bien.

library(dplyr)

ggplot(arrange(data, gclass), aes(mon, NG, fill = gclass)) +
    geom_bar(stat = "identity")

Esto se hace fácilmente en base R, por supuesto, usando el clásico order con los corchetes de extracto:

ggplot(data[order(data$gclass), ], aes(mon, NG, fill = gclass)) +
    geom_bar(stat = "identity")

Con la trama resultante en ambos casos ahora en el orden deseado:
ingrese la descripción de la imagen aquí

actualización ggplot2_2.2.0

En ggplot_2.2.0, el orden de llenado se basa en el orden de los niveles de los factores. El orden predeterminado trazará el primer nivel en el cima de la pila en lugar de la parte inferior.

Si desea el primer nivel en la parte inferior de la pila, puede usar reverse = TRUE en position_stack. Tenga en cuenta que también puede utilizar geom_col como atajo para geom_bar(stat = "identity").

ggplot(data, aes(mon, NG, fill = gclass)) +
    geom_col(position = position_stack(reverse = TRUE))

Tienes que especificar el order estética también.

ggplot(data,aes(mon,NG,fill=gclass,order=gclass))+
    geom_bar(stat="identity")

ingrese la descripción de la imagen aquí

Esto puede o no ser un error.

Para ordenar, debe usar el levels parámetro e informar el pedido. Me gusta esto:

data$gclass
(data$gclass2 <- factor(data$gclass,levels=sample(levels(data$gclass)))) # Look the difference in the factors order
ggplot(data,aes(mon,NG,fill=gclass2))+geom_bar(stat="identity")

Agradecemos que desees confirmar nuestra misión dejando un comentario y valorándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *