Categoria 'Outros' sendo ultimo nivel de um fator

Olá.
Após criar o nível ‘Outras’ com a função fct_lump_n e ordenar por um valor com a fct_reorder, o nível ‘Outras’ é mostrado no meio do gráfico (correto afinal seu valor é mesmo intermediário). Nesse caso como fariamos para deixar ‘Outras’ sendo a ultima coluna do gráfico, independente do seu valor?

fct_relevel declarando manualmente os níveis é uma opção, mas talvez haja algo mais automático, bem útil em casos de muitos níveis.

library(tidyverse)

dados::casas %>%
  mutate(vizinhanca = forcats::fct_lump_n(vizinhanca, n = 9, other_level = 'Outras')) %>% 
  group_by(vizinhanca) %>% 
  summarise(n = n(),
            valor = mean(venda_valor)) %>% 
  mutate(vizinhanca = forcats::fct_reorder(vizinhanca, -valor)) %>% 
  ggplot(aes(x = vizinhanca, y = valor, fill = vizinhanca))+
  geom_col()+
  theme(axis.text.x = element_blank())

Created on 2021-04-20 by the reprex package (v1.0.0)

1 curtida

Acho que a solução mais simples é colocar manualmente o “Outras” por último:

library(tidyverse)

dados::casas %>%
  mutate(vizinhanca = fct_lump_n(vizinhanca, n = 9, other_level = "Outras")) %>% 
  group_by(vizinhanca) %>% 
  summarise(n = n(), valor = mean(venda_valor)) %>% 
  mutate(
    vizinhanca = fct_reorder(vizinhanca, -valor),
    vizinhanca = fct_relevel(vizinhanca, "Outras", after = 9)
  ) %>% 
  ggplot(aes(x = vizinhanca, y = valor, fill = vizinhanca))+
  geom_col()+
  theme(axis.text.x = element_blank())

Created on 2021-04-21 by the reprex package (v2.0.0)

2 curtidas