instalar - controlando el orden de facet_grid/facet_wrap en ggplot2?
ggplot2 descargar (1)
No creo que pueda satisfacer realmente su requisito de "sin hacer un nuevo marco de datos", pero puede crear el nuevo marco de datos sobre la marcha:
ggplot(transform(iris,
Species=factor(Species,levels=c("virginica","setosa","versicolor")))) +
geom_histogram(aes(Petal.Width))+ facet_grid(Species~.)
Estoy de acuerdo en que sería bueno si hubiera otra forma de controlar esto, pero ggplot
ya es un motor bastante poderoso (y complicado) ...
Tenga en cuenta que el orden de (1) las filas en el conjunto de datos es independiente del orden de (2) los niveles del factor . # 2 es qué factor(...,levels=...)
cambia, y lo que ggplot
observa para determinar el orden de las facetas. Hacer # 1 (ordenar las filas del marco de datos en un orden específico) es un desafío interesante. Creo que realmente lograría esto al hacer el # 2 primero, y luego usar order()
or arrange()
para ordenar de acuerdo con los valores numéricos del factor:
neworder <- c("virginica","setosa","versicolor")
library(plyr) ## or dplyr (transform -> mutate)
iris2 <- arrange(transform(iris,
Species=factor(Species,levels=neworder)),Species)
No puedo ver de inmediato una forma rápida de hacerlo sin cambiar el orden de los niveles de los factores (puede hacerlo y luego restablecer el orden de los niveles de los factores en consecuencia).
En general, las funciones en R que dependen del orden de los niveles de una variable categórica se basan en el orden de nivel de factor, no en el orden de las filas en el conjunto de datos: la respuesta anterior se aplica de manera más general.
Esta pregunta ya tiene una respuesta aquí:
Estoy tramando cosas usando facet_wrap
y facet_grid
en ggplot, como:
ggplot(iris) + geom_histogram(aes(iris$Petal.Width)) + facet_grid(Species ~ .)
¿Es posible controlar el orden en que se ordenan los paneles de Species
en el diagrama? ¿Se puede hacer esto sin cambiar el marco de datos del iris
o crear uno nuevo? El valor predeterminado aquí muestra setosa, versicolor, virginica pero me gustaría un orden diferente. Gracias.