Facet_wrap no está ordenando correctamente las gráficas por sus valores.
Estoy intentando organizar mis gráficos por valor utilizando facet_wrap()
, sin embargo, algunos de ellos no están en orden de beneficio de ventas. Aquí está la imagen:
Mi código:
Lucro_Categorias %>%
mutate(Categoria = Categoria %>%
as_factor() %>%
fct_reorder(Lucro)) %>%
ggplot(aes(x = Ano, y = Lucro, fill = Categoria, order = -Lucro)) +
geom_col() +
facet_wrap(~ Categoria, scales = "free_y") +
theme_tq() +
scale_y_continuous(labels = scales::dollar_format(prefix = "", suffix = "", big.mark = ".", decimal.mark = ","))
Aquí están los archivos de origen: aquí y aquí.
¿Cómo puedo mover los dos gráficos circulados en negro a donde he señalado con la flecha?
davy.ai
Para organizar los gráficos por valor utilizando
facet_wrap()
, podemos agregar la funciónfct_reorder()
del paqueteforcats
dentro demutate()
para reordenar los niveles de nuestra variable categórica,Categoria
, basándonos en los valores deLucro
. Luego, podemos establecer el parámetroorder
dentro deggplot()
como-Lucro
.En el código proporcionado, este paso ya ha sido implementado. Sin embargo, hay dos gráficos que no están en el orden deseado. Para moverlos a la posición específica que se muestra en la imagen, podemos utilizar el parámetro
limits
dentro descale_y_continuous()
para ajustar manualmente los límites del eje y para esos gráficos específicos.Entonces, para mover los dos gráficos marcados en negro a donde apunta la flecha, podemos modificar el código de la siguiente manera:
En la función
facet_wrap()
, establecemosstrip.position = "bottom"
para mover las etiquetas de los facets hacia la parte inferior de cada gráfico. También agregamos una función personalizadalabeller
para cambiar la etiqueta de los dos gráficos marcados en negro e incluir los valores específicos de beneficio. Por último, establecemos los límites del eje y para cada facet utilizando el parámetrolimits
dentro descale_y_continuous()
.