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:
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")
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.