Exercı́cio 1.1 - Introdução ao ggplot2

Gráfico de dispersão - Dataset mtcars

Relação entre as variáveis mpg (milhas por galão) e wt (peso do carro)

# Carregamento do dataset
dados_carros <- mtcars

dados_carros %>%
  ggplot(aes(x=wt, y=mpg, color=factor(cyl))) +
  geom_point(size=4, alpha=0.7) +
  labs(
    title = "Relação entre peso do carro e consumo de combustível",
    x = "Peso em milhares de libras",
    y = "Consumo de combustível em milhas por galão (mpg)",
    color = "Número de cilindros"
  ) +
  theme_minimal()

Exercício 1.2 - Gráfico de barras

Gráfico de barras - Dataset diamonds

Contagem de diamantes por corte

# Carregamento do dataset
dados_diamantes <-diamonds

# Contagem de diamantes por corte
contagem_cut <- dados_diamantes %>%
  count(cut, name = "total")

contagem_cut %>%
  ggplot(aes(x = fct_reorder(cut, -total), y = total, fill = cut)) +
  geom_col() +
  geom_text(aes(label = total),
            vjust = -0.5,
            size = 3) +
  scale_fill_brewer(palette = "Spectral", guide = "none") +
  labs(
    title = "Contagem de diamantes por corte",
    x = "Qualidade do corte",
    y = "Contagem total"
  ) +
  theme_minimal()

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

Boxplot - Dataset diamonds

Análise de preço por qualidade do corte

# Mapeamento dos rótulos para português 
rotulos_portugues <- c(
  "Fair" = "Ruim",
  "Good" = "Bom",
  "Very Good" = "Muito bom",
  "Premium" = "Premium",
  "Ideal" = "Ideal"
)

dados_diamantes %>%
  ggplot(aes(x = cut, y = price, fill = cut)) +
  geom_boxplot() +
  scale_x_discrete(labels = rotulos_portugues) +
  scale_fill_brewer(palette = "Set2", guide = "none") +
  labs(
    title = "Preço por qualidade do corte",
    x = "Qualidade do corte",
    y = "Preço"
  ) +
  theme_minimal() + 
  theme(
    axis.text.x = element_text(
      angle = 45,
      hjust = 1))

Exercício 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?

Ambos são utilizados para a plotagem de pontos em um gráfico de dispersão. Contudo, diferem na forma como apresentam pontos que possuem a mesma coordenada.

geom_point() plota cada ponto exatamente na posição definida por aes(x, y), contribuindo para o problema conhecido como “overplotting”. Isso ocorre quando muitos pontos compartilham a mesma coordenada X e Y, fazendo com o que esses pontos fiquem empilhados um sobre o outro (sobreposição).

geom_jitter() adiciona uma espécie de ruído para cada ponto plotado, separando os pontos que estavam sobrepostos e melhorando a visualização dos dados.

Desta forma, a utilização de geom_point() se torna mais apropriada para datasets pequenos ou quando não há muitos valores com as mesmas coordenadas X e Y. Enquanto geom_jitter() é mais eficaz para datasets com muitos pontos com as mesmas coordenadas X e Y.

Questão 2

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

O conceito de “Gramática dos Gráficos” consiste em associar cada componente a uma estrutura gramatical específica, responsável por atribuir características ao gráfico. Essas estruturas são organizadas da seguinte forma: data (dados), aesthetics (estética), geometries (geometrias), facets (facetas), statistics (estatísticas), coordinates (coordenadas) e theme (tema).

O ggplot2 utiliza este conceito para montar gráficos por meio de camadas, as quais atribuem aos dados características estéticas, formas geométricas e outros elementos visuais, como legendas e títulos. Dessa forma, o gráfico é o resultado final da combinação de todas as camadas aplicadas.