# Adicionando o pacote dplyr para pré-cálculo
library(dplyr)

# 1. Pré-cálculo da contagem (frequência) e ordenação dos dados
dados_contagem <- diamonds %>%
  group_by(cut) %>%
  summarise(n = n()) %>%
  ungroup() %>%
  # 2. Ordena o fator 'cut' com base na contagem 'n'
  mutate(cut = reorder(cut, n))

# 3. Gerar o gráfico usando os dados pré-calculados (stat="identity")
ggplot(dados_contagem, aes(x = cut, y = n, fill = cut)) +
  
  # stat="identity" força o gráfico a usar a altura 'n' (contagem)
  geom_bar(stat = "identity") +
  
  # Adiciona rótulos de valor
  geom_text(aes(label = n), vjust = -0.5, size = 4) +
  
  # Paleta de Cores
  scale_fill_brewer(palette = "Spectral", name = "Tipo de Corte") +
  
  # Ajustes estéticos
  labs(
    title = "Contagem de Diamantes por Qualidade de Corte (Cut)",
    x = "Qualidade do Corte",
    y = "Número de Diamantes"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    legend.position = "none"
  )