una - personalizar ejes en r
Cómo cambiar el orden de las etiquetas de facetas en ggplot(etiquetas de ajuste de facetas personalizadas) (2)
Hola, tracé una trama faceta usando ggplot en R y aquí está la trama
El problema que tengo es que las facetas (etiquetas) se ordenan alfabéticamente (Ej: E1, E10, E11, E13, E2, E3, I1, I10, I2) pero necesito que sean un pedido personalizado como E1, I1, E2 , I2, E3, E10, I10, E11, E13.
Cómo puedo hacer eso ?
No confíe en el orden predeterminado de los niveles impuestos por factor()
o internamente por ggplot
si la variable de agrupación que suministra no es un factor. Establezca los niveles explícitamente usted mismo.
dat <- data.frame(x = runif(100), y = runif(100),
Group = gl(5, 20, labels = LETTERS[1:5]))
head(dat)
with(dat, levels(Group))
¿Qué pasa si los quiero en este orden arbitrario?
set.seed(1)
with(dat, sample(levels(Group)))
Para hacer esto, configure los niveles de la manera que desee.
set.seed(1) # reset the seed so I get the random order form above
dat <- within(dat, Group <- factor(Group, levels = sample(levels(Group))))
with(dat, levels(Group))
Ahora podemos usar esto para tener los paneles dibujados en el orden que queremos:
require(ggplot2)
p <- ggplot(dat, aes(x = x)) + geom_bar()
p + facet_wrap( ~ Group)
Que produce:
Solo estoy trabajando en un problema similar. Tengo niveles que se ven así por defecto:
[1] "A1" "A10" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9"
[11] "B1" "B2" "B3" "B4" "B5" "B6" "B7" "B8" "B9"
Tenga en cuenta que el segundo nivel está fuera de lugar debido al orden alfabético.
Esto es lo que estoy haciendo para arreglar el orden:
reorder(factor(fct),
fct %>%
str_replace("([[:alpha:]]+)", "//1|") %>%
str_split("//|") %>%
sapply(function(d) sprintf("%s%02d", d[1], as.integer(d[2]))),
function(x) x[1])
Reemplaza los niveles como "A1" por "A01" y luego los reordena según estos. Estoy seguro de que podrías hacer esto mucho más eficientemente, pero hace el trabajo.
Se podría adaptar para abordar el problema original.