library(ggplot2)
data(mtcars)
mtcars$cyl <- as.factor(mtcars$cyl)
ggplot(data = mtcars) +
  aes(x = wt, y = mpg, color = cyl) +
  geom_point(size = 3) +
  labs(
    title = "Relação entre Peso e Consumo de Combustível",
    x = "Peso do Carro (milhares de libras)",
    y = "Milhas por Galão (MPG)",
    color = "Cilindros (cyl)"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    legend.position = "bottom"
  )

# 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") +
  
  # 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") +
  
  # Estética 
  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"
  )

# 2. Cria o boxplot personalizado
ggplot(data = diamonds, aes(x = cut, y = price, fill = cut)) +
  geom_boxplot() +
  labs(
    title = "Distribuição de Preços de Diamantes por Tipo de Corte",
    x = "Tipo de Corte",
    y = "Preço (USD)"
  ) +
  scale_fill_manual(
    values = c("Fair" = "#E69F00", "Good" = "#56B4E9",
               "Very Good" = "#009E73", "Premium" = "#F0E442",
               "Ideal" = "#0072B2")
  ) +
  theme_minimal() +
  theme(
    legend.position = "none",
    axis.text.x = element_text(angle = 45, hjust = 1)
  )