1 RPM 49 BPM


Exercícios e Resoluções

Exercício 1.1

1.1 - Introdução ao ggplot2

ggplot(data = mtcars) + aes(x = wt, y = mpg, color = factor (cyl)) + 
  geom_point(size = 2) +
  labs(
    title = "Relacao entre Peso e Consumo de Combustivel",
    x = "Peso do carro (wt)",
    y = "Milhas por galao (mpg)",
    color = "Nr de cilindros"
  ) +
  theme_minimal()

Exercício 1.2

1.2 - Gráficos de Barras

# Agrupar e ordenar
contagem_agrup <- diamonds %>%
  group_by(cut) %>%
  summarise(total = n()) %>%
  arrange(desc(total)) %>%
  mutate(cut = factor(cut, levels = cut))
# Grafico
ggplot(contagem_agrup, aes(x = cut, y = total, fill = cut)) +
  geom_bar(stat = "identity") +
  geom_text(
    aes(label = total),
    vjust = -0.3,
    size = 4
  ) +
  labs(
    title = "Contagem de Diamantes por Tipo de Corte",
    x = "Tipo de Corte",
    y = "Quantidade de Diamantes",
    fill = "Corte"
  ) +
  scale_fill_brewer(palette = "Pastel1") +
  theme_minimal()

Exercício 1.3

1.3 - Customização avançada - Box Plot

# colocar em portugues
diamonds_pt <- diamonds %>%
  mutate(
    cut = factor(
      cut,
      levels = c("Fair", "Good", "Very Good", "Premium", "Ideal"),
      labels = c("Regular", "Bom", "Muito Bom", "Premium", "Ideal")
    )
  )
# Vetor de cores
cores <- c(
  "#FBB4AE",
  "#B3CDE3",
  "#CCEBC5",
  "#DECBE4",
  "#FED9A6"
)
# Criar o boxplot
ggplot(diamonds_pt, aes(x = cut, y = price, fill = cut)) +
  geom_boxplot(outlier.alpha = 0.3) +
  labs(
    title = "Preço dos Diamantes por Tipo de Corte",
    x = "Tipo de Corte",
    y = "Preço (em dólares)"
  ) +
  scale_fill_manual(values = cores)+
  theme_minimal() +
  theme(
    legend.position = "none", # remover legenda
    axis.text.x = element_text(
      angle = 45, hjust = 1 # ajustar ângulo do eixo X
    )
  )

Exercício 1.4

1.4 - Conceitos Fundamentais

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

O geom_point() e o geom_jitter() são utilizados para criar gráficos de dispersão no ggplot2, porém apresentam uma diferença importante na forma como os pontos são exibidos.

O geom_point() plota os pontos exatamente nas posições originais dos dados. Ele é mais apropriado quando as variáveis são contínuas e os pontos não ficam muito sobrepostos, permitindo visualizar claramente a relação entre as variáveis.

Já o geom_jitter() adiciona um pequeno deslocamento aleatório aos pontos do gráfico. Esse deslocamento ajuda a evitar que vários pontos fiquem sobrepostos no mesmo local, o que é comum quando uma das variáveis é categórica ou possui poucos valores possíveis. Dessa forma, o gráfico fica mais fácil de interpretar.

Em resumo, o geom_point() é mais indicado quando os dados estão bem distribuídos, enquanto o geom_jitter() é mais adequado quando há sobreposição de pontos e é necessário melhorar a visualização da quantidade e distribuição dos dados.

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

A Gramática dos Gráficos é um conceito apresentado por Leland Wilkinson no livro The Grammar of Graphics, que propõe que gráficos podem ser construídos de forma semelhante à linguagem escrita.

Assim como uma língua possui palavras e regras gramaticais para formar frases com significado, a visualização de dados também possui componentes básicos e regras que, quando combinados corretamente, formam gráficos informativos e consistentes.

No ggplot2 este conceito é implementado na forma como os gráficos são construídos, através de camadas que atribuem aos dados características estéticas, formas geométricas e outros elementos visuais. Assim, a combinação de todas essas camadas forma o gráfico final, que, na gramática, seria o equivalente a uma frase completa, com conteúdo e sentido.