library(ggplot2)
library(dplyr)
library(cowplot)
library(patchwork)
library(grid)
library(magick)
arquivo_imagem <- "logo.png"

header_grob <- if (file.exists(arquivo_imagem)) {
  ggdraw() + draw_image(arquivo_imagem, scale = 1)
} else {
  ggdraw() + 
    draw_label("Logo não encontrada", color = "red", size = 16, fontface = "bold") +
    theme(plot.background = element_rect(fill = "#f8f9fa"))
}
grafico_carros <- ggplot(
  mtcars,
  aes(x = wt, y = mpg, color = factor(cyl))
) +
  geom_point(size = 5, alpha = 0.9) +
  labs(
    title    = "Relação entre Peso e Consumo de Combustível",
    subtitle = "18ª RPM - PMMG",
    x = "Peso (x1000 lbs)",
    y = "Milhas por Galão",
    color = "Cilindros"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 16),
    legend.position = "bottom"
  ) +
  scale_color_manual(
    values = c("#E74C3C", "#2ECC71", "#3498DB")
  )

layout_final <- header_grob / grafico_carros + plot_layout(heights = c(1, 5))

layout_final

dados_diamante <- diamonds %>%
  count(cut) %>%
  mutate(cut = reorder(cut, n))

grafico_barras <- ggplot(
  dados_diamante,
  aes(x = cut, y = n, fill = cut)
) +
  geom_col() +
  geom_text(aes(label = scales::comma(n)), vjust = -0.5, size = 3.5) +
  scale_fill_brewer(palette = "Spectral") +
  labs(
    title = "Quantidade de Diamantes por Tipo de Corte",
    x = "Tipo de Corte",
    y = "Quantidade Total"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

grafico_barras

grafico_box <- ggplot(
  diamonds,
  aes(x = cut, y = price, fill = cut)
) +
  geom_boxplot() +
  labs(
    title = "Distribuição de Preços por Corte",
    subtitle = "Análise de variação de valores",
    x = "Qualidade do Corte",
    y = "Preço (USD)"
  ) +
  scale_fill_manual(
    values = c("#1abc9c", "#3498db", "#9b59b6", "#e67e22", "#e74c3c")
  ) +
  theme_light() +
  theme(
    legend.position = "none",
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

grafico_box

## Exercício 1.4 – Conceitos Fundamentais

Diferença entre geom_point() e geom_jitter()

  • geom_point() plota os pontos exatamente nas coordenadas (x, y). É ideal quando não há sobreposição excessiva.
  • geom_jitter() adiciona uma pequena perturbação aleatória aos pontos, evitando sobreposição (“overplotting”). É útil quando há muitos pontos idênticos ou discretos.

Gramática dos Gráficos (Grammar of Graphics)

A “Gramática dos Gráficos” é um sistema conceitual para descrever e construir gráficos estatísticos. No ggplot2, ela é implementada através de camadas (layers) independentes: dados, estética (aes), geometria (geom), escalas, facetas, temas, etc. Isso permite construir visualizações complexas de forma modular e lógica.