Exercício 1.1 - Introdução ao ggplot2

##Este trabalho tem como finalidade criação de um gráfico de dispersão (scatter plot) entre as variáveis mpg e wt, com cor diferenciada por número de cilindros (cyl) e tema minimal().

# 1. Prepara os dados 
mtcars_prep <- mtcars %>%
  mutate(cyl = as.factor(cyl))

# 2. Desenha o Gráfico
ggplot(data = mtcars_prep) +
  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 - wt)",
    y = "Milhas por Galão (MPG - Consumo)",
    color = "Cilindros"
  ) +
  theme_minimal()

2. Customização e Gráficos Categóricos

##2.1 Exercício - Gráfico de Barras (diamonds)

ggplot(data = diamonds) +
  
  # (a) Ordenar as barras em ordem decrescente (usando reorder)
  aes(x = reorder(cut, cut, function(x) -length(x)), fill = cut) +
  geom_bar() +
  labs(
    title = "Contagem de Diamantes por Qualidade de Corte",
    x = "Qualidade do Corte",
    y = "Contagem de Diamantes"
  ) +
  
  # (b) Paleta de cores divergente (Brewer)
  scale_fill_brewer(palette = "RdYlGn") +
  theme_minimal() +
  
  # (c) Adicionar rótulos de valor em cada barra
  geom_text(
    stat = "count",
    aes(label = after_stat(count)),
    vjust = -0.5, # Posição vertical do texto
    size = 3.5
  ) +
  theme(legend.position = "none") # Remoção da legenda de preenchimento

2.2 Boxplot Avançado (daimonds)

# (a) Cores customizadas para cada categoria de 'cut'
cores_personalizadas <- c(
  "Fair" = "#E41A1C", 
  "Good" = "#377EB8", 
  "Very Good" = "#4DAF4A", 
  "Premium" = "#984EA3", 
  "Ideal" = "#FF7F00"
)

# Criação do boxplot
ggplot(data = diamonds) +
  aes(x = cut, y = price, fill = cut) +
  geom_boxplot() +
  # (b) Títulos e rótulos em português
  labs(
    title = "Distribuição do Preço por Tipo de Corte",
    subtitle = "Dataset Diamonds: Análise de Preço",
    x = "Qualidade do Corte",
    y = "Preço (Dólares Americanos)"
  ) +
  scale_fill_manual(values = cores_personalizadas) + # Aplica as cores customizadas
  theme_minimal() +
  theme(
    # (c) Ajuste do ângulo dos rótulos do eixo X
    axis.text.x = element_text(angle = 45, hjust = 1), 
    # (d) Remoção da legenda
    legend.position = "none" 
  )

2.3 Conclusão

cat("Análise concluída com", nrow(diamonds), "observações e", ncol(diamonds), "variáveis.")
## Análise concluída com 53940 observações e 10 variáveis.

3 . Conceitos - Fundamentais

3.1 Exercício - Conceitos

3.1.1 Diferença entre geom_point() e geom_jitter()

A diferença principal reside no tratamento da sobreposição de pontos (overplotting), que ocorre quando múltiplos dados compartilham as mesmas coordenadas \(x\) e \(y\).

geom_point():

  • Desenha pontos exatamente nas coordenadas especificadas.
  • É melhor para conjuntos de dados com valores contínuos distintos, onde a sobreposição é mínima e a precisão da coordenada é crucial.
  • Se muitos pontos caírem no mesmo local, eles ficarão escondidos uns atrás dos outros, distorcendo a percepção da densidade dos dados.

geom_jitter():

  • Adiciona uma pequena quantidade de ruído aleatório (jitter) aos pontos, espalhando-os ligeiramente nas coordenadas.
  • É ideal para visualizar a densidade de dados discretos ou categóricos, prevenindo que a sobreposição esconda o verdadeiro volume de observações.

3.1.2 Conceito de “Gramática dos Gráficos”

O conceito de “Gramática dos Gráficos” (Grammar of Graphics), popularizado por Leland Wilkinson e implementado no ggplot2 por Hadley Wickham, é uma estrutura conceitual que define como os elementos de um gráfico são combinados e construídos de forma modular e coerente.

Em vez de tratar gráficos como tipos predefinidos (ex: “boxplot”, “histograma”), a Gramática os vê como uma montagem de componentes independentes que podem ser combinados de forma flexível.**