POLÍCIA MILITAR DE MINAS GERAIS
COMANDO DE MISSÕES ESPECIAIS
REGIMENTO DE CAVALARIA ALFERES TIRADENTES

Relatório de Exercícios

Cap PM Thiago França Rosa / CME RCAT



Exercício 1.1 - Introdução ao ggplot2

library(ggplot2)

data(mtcars)

ggplot(data = mtcars) +
  aes(x = wt, y = mpg, color = factor(cyl)) +
  geom_point(size = 3) +
  labs(
    title = "Relação entre Peso e Consumo de Combustível",
    x = "Peso do carro (wt)",
    y = "Milhas por galão (mpg)",
    color = "Cilindros"
  ) +
  theme_minimal()



Exercício 1.2 – Gráficos de Barras

library(ggplot2)
library(dplyr)


data(diamonds)


df_cut <- diamonds %>%
  count(cut) %>%
  arrange(desc(n))


ggplot(df_cut, aes(x = reorder(cut, -n), y = n, fill = n)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = n), vjust = -0.5, size = 4) +
  scale_fill_distiller(palette = "Spectral", direction = 1) +
  labs(
    title = "Contagem de Diamantes por Qualidade de Corte",
    x = "Qualidade do corte (cut)",
    y = "Quantidade de diamantes",
    fill = "Contagem"
  ) +
  theme_minimal()



Exercício 1.3 – Costumização Avançada

library(ggplot2)
library(dplyr)

# Dados
data(diamonds)

# Boxplot solicitado
ggplot(diamonds, aes(x = cut, y = price, fill = cut)) +
  geom_boxplot() +
  scale_fill_manual(
    values = c(
      "Fair" = "#d73027",
      "Good" = "#fc8d59",
      "Very Good" = "#fee08b",
      "Premium" = "#91bfdb",
      "Ideal" = "#4575b4"
    )
  ) +
  labs(
    title = "Distribuição dos Preços por Tipo de Corte",
    x = "Tipo de Corte (cut)",
    y = "Preço do Diamante (USD)"
  ) +
  theme_minimal() +
  theme(
    legend.position = "none",      # Remove legenda
    axis.text.x = element_text(angle = 45, hjust = 1)   # Inclinação dos rótulos do eixo X
  )



Exercício 1.4 - Conceitos Fundamentais

Questão: Explique a diferença entre os geoms geom_point() e geom_jitter(). Em que situação cada um é mais apropriado?


Resposta: O geom_point() cria pontos exatamente nas coordenadas dos dados, sendo ideal quando não há muita sobreposição entre as observações. Já geom_jitter() adiciona um pequeno deslocamento aleatório aos pontos, apenas para fins visuais, evitando que valores iguais fiquem sobrepostos e invisíveis no gráfico. Assim, geom_point() é mais apropriado para dados contínuos com baixa densidade de pontos, enquanto geom_jitter() é preferível quando há grande concentração de observações em um mesmo valor, especialmente em eixos categóricos, pois melhora a legibilidade ao revelar a distribuição real dos dados.



Questão: Descreva o conceito de “Gramática dos Gráficos” e como ele é implementado no ggplot2.


Resposta: A “Gramática dos Gráficos” é um modelo conceitual que define que qualquer visualização é construída pela combinação estruturada de componentes básicos, como dados, mapeamentos estéticos, geometrias, escalas, temas e facetas. No ggplot2, essa gramática é implementada por meio de uma construção em camadas, na qual o usuário define os dados, especifica os mapeamentos estéticos com aes(), escolhe geometrias como pontos, linhas ou barras, adiciona transformações estatísticas e ajusta escalas e temas. Cada camada é adicionada com o operador +, permitindo criar gráficos complexos de forma modular e coerente.

```