1. Introdução ao ggplop2

1.1 Exercício - Gráfico de Dispersão (mtcars)

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

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

2.2 Boxplot Avançado (daimonds)

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.

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 dados com variáveis discretas ou categóricas (como contagens ou ratings em escalas), onde a sobreposição é esperada.

Permite que todos os pontos sejam visualizados, revelando a densidade real das observações em um determinado ponto.

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.

4.Conclusão

# Introdução ao ggplot2

mtcars_prep <- mtcars %>%
  mutate(cyl = as.factor(cyl))

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) + # (b) 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" 
  )

# Conclusão
## Análise concluída com 53940 observações e 10 variáveis.