Exercício 1.1 - Introdução ao ggplot2

Carregue o dataset mtcars e crie um gr´afico de dispers˜ao (scatter plot) entre as variáveis mpg (milhas por galão) e wt (peso do carro).
Adicione ao gráfico os itens:
(a) Tíıtulo: “Relação entre Peso e Consumo de Combustível”
(b) Rótulos dos eixos X e Y
(c) Cor diferenciada por número de cilindros (cyl)
(d) Tema theme minimal()

Dica: Use ggplot(data = mtcars) + aes(x = wt, y = mpg) + geom point()

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

Utilizando o dataset diamonds, crie um gráfico de barras mostrando a contagem de diamantes por corte (cut).
Modifique o gráfico para:
(a) Ordenar as barras em ordem decrescente
(b) Adicionar róotulos de valor em cada barra
(c) Utilizar uma paleta de cores divergente
Dica: Use geom bar() e scale fill brewer()

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

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

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

Crie um boxplot da variável price por cut no dataset diamonds.
Personalize o gráfico com:
(a) Títulos e rótulos em português
(b) Cores customizadas para cada categoria
(c) Remoção da legenda (se desnecessária)
(d) Ajuste do ângulo dos rótulos do eixo X

diamonds2 <- diamonds %>%
  mutate(cut_pt = case_when(
    cut == "Fair" ~ "Regular",
    cut == "Good" ~ "Bom",
    cut == "Very Good" ~ "Muito Bom",
    cut == "Premium" ~ "Premium",
    cut == "Ideal" ~ "Ideal"
  ))
ggplot(diamonds2, aes(x = cut_pt, y = price, fill = cut_pt)) +
  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(
    "Regular" = "#d73027",
    "Bom" = "#fc8d59",
    "Muito Bom" = "#fee08b",
    "Premium" = "#91bfdb",
    "Ideal" = "#4575b4"
  )) +
  theme_minimal() +
  theme(
    legend.position = "none",
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

Exercício 1.4 - Conceitos Fundamentais

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

Resposta

O comando geom_point() cria pontos exatamente nas coordenadas originais dos dados sendo ideal quando não há muitos pontos sobrepostos, permitindo visualizar cada ponto de forma precisa.

O comando geom_jitter() adiciona uma pequena variação aleatória (jitter) na posição dos pontos, evitando sobreposição quando muitas pontos têm valores idênticos ou muito próximos, alterando apenas a visualização, não os dados.

1.4.2 Descreva o conceito de ”Gramáticaca dos Gráficos” e como ele é implementado no ggplot2.

Resposta

A Gramática dos Gráficos é um modelo criado por Leland Wilkinson, que descreve qualquer visualização como a combinação de componentes básicos: dados, mapeamentos estéticos (aes), geometrias (geoms), transformações estatísticas (stats), escalas, sistema de coordenadas, facetas e tema.

No ggplot2 essa gramática é implementada como um sistema de camadas: os dados são definidos e posteriormente adicionadas as camadas através de funções como aes, geoms,stats, scales,coords, facets e theme. Cada parte do gráfico corresponde diretamente a um dos componentes da gramática.