Exercício 1.1 - Introdução ao ggplot2

# Carregar o ggplot2
library(ggplot2)

# Dataset mtcars
data(mtcars)

# Gráfico 
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áfico de Barras

library(ggplot2)

# Dataset diamonds
data(diamonds)

# Gráfico 
ggplot(diamonds, aes(x = reorder(cut, -table(cut)[cut]), fill = cut)) +
  geom_bar() +
  geom_text(
  stat = "count",
  aes(label = after_stat(count)),
  vjust = -0.5,
  size = 4
) +
  scale_fill_brewer(palette = "RdYlBu") +   # Paleta divergente
  labs(
    title = "Contagem de Diamantes por Tipo de Corte",
    x = "Tipo de Corte",
    y = "Contagem",
    fill = "Corte"
  ) +
  theme_minimal()

Exercício 1.3 - Customização Avançada

library(ggplot2)

# Dataset diamonds
data(diamonds)

ggplot(diamonds, aes(x = cut, y = price, fill = cut)) +
  geom_boxplot() +
  labs(
    title = "Distribuição dos Preços por Tipo de Corte",
    x = "Tipo de Corte",
    y = "Preço (USD)"
  ) +
  scale_fill_manual(values = c(
    "Fair" = "#1b9e77",
    "Good" = "#d95f02",
    "Very Good" = "#7570b3",
    "Premium" = "#e7298a",
    "Ideal" = "#66a61e"
  )) +
  theme_minimal() +
  theme(
    legend.position = "none",          # (c) Remove a legenda
    axis.text.x = element_text(        # (d) Ajusta o ângulo dos rótulos
      angle = 45, 
      hjust = 1
    )
  )

Exercício 1.4

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

Resposta: A diferença entre geom_point() e geom_jitter() está principalmente na forma como os pontos são exibidos no gráfico. O geom_point() coloca cada ponto exatamente nas coordenadas correspondentes às variáveis mapeadas, sendo ideal para gráficos de dispersão tradicionais. Porém, quando muitos pontos possuem valores idênticos ou muito próximos, ocorre sobreposição, o que dificulta a visualização da real quantidade de observações. Já o geom_jitter() funciona como uma variação do geom_point(), adicionando um pequeno deslocamento aleatório na posição dos pontos. Esse “ruído” permite separar visualmente observações que estão empilhadas no mesmo local, tornando-o mais adequado quando lidamos com overplotting, especialmente em eixos categóricos, onde vários pontos compartilham exatamente o mesmo valor no eixo X.

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

Resposta: O conceito de “Gramática dos Gráficos”, ele se refere a uma forma sistemática de pensar a construção de visualizações. A ideia é que qualquer gráfico pode ser entendido como a combinação de alguns componentes essenciais: os dados, os mapeamentos estéticos (como x, y, cor, tamanho), a geometria que define como esses dados serão representados visualmente (pontos, barras, linhas), as transformações estatísticas, as escalas, o sistema de coordenadas e o tema. O ggplot2 implementa essa gramática ao permitir que o usuário construa gráficos adicionando camadas, cada uma delas correspondendo a um desses elementos fundamentais. Assim, em vez de usar funções isoladas para cada tipo de gráfico, o ggplot2 permite montar visualizações complexas de maneira consistente, estruturada e flexível, como se estivéssemos escrevendo uma frase com diferentes partes que se combinam logicamente.