1 Exercício 1.1


Questão: Carregue o dataset mtcars e crie um gráfico de dispersão (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()

# Carregar o pacote
library(ggplot2)

# Criar o gráfico de dispersão
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()

2 Exercício 1.2


Utilizando o dataset diamonds, crie um gráfico de barras mostrando a contagem de diamantes por corte (cut).

Questão: Modifique o gráfico para:

(a) Ordenar as barras em ordem decrescente
(b) Adicionar rótulos de valor em cada barra
(c) Utilizar uma paleta de cores divergente

Dica: Use geom bar() e scale fill brewer()

# Carregar pacote
library(ggplot2)
library(dplyr)
## 
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
## 
##     filter, lag
## Os seguintes objetos são mascarados por 'package:base':
## 
##     intersect, setdiff, setequal, union
# Contagem por corte
dados_cut <- diamonds %>%
  mutate(
    cut = factor(
      cut,
      levels = c("Fair", "Good", "Very Good", "Premium", "Ideal"),
      labels = c("Regular", "Bom", "Muito Bom", "Premium", "Ideal")
    )
  ) %>%
  count(cut)

# Gráfico de barras
ggplot(dados_cut, aes(x = reorder(cut, -n), y = n, fill = cut)) +
  geom_col() +
  geom_text(
    aes(label = n),
    vjust = -0.3,
    size = 4
  ) +
  labs(
    title = "Contagem de Diamantes por Tipo de Corte",
    x = "Tipo de Corte",
    y = "Quantidade"
  ) +
  scale_fill_brewer(palette = "RdYlBu") +
  theme_minimal()

3 Exercício 1.3


Questão: 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

library(ggplot2)

dados_cut <- diamonds %>%
  mutate(
    cut = factor(
      cut,
      levels = c("Fair", "Good", "Very Good", "Premium", "Ideal"),
      labels = c("Regular", "Bom", "Muito Bom", "Premium", "Ideal")
    )
  )
# Boxplot do preço por tipo de corte
ggplot(dados_cut, aes(x = cut, y = price, fill = cut)) +
  geom_boxplot() +
  labs(
    title = "Distribuição do Preço dos Diamantes por Tipo de Corte",
    x = "Tipo de Corte",
    y = "Preço (Dólar)"
  ) +
  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)
  )

4 Exercício 1.4


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

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

4.1 Questão 1.4.1 - Resposta

geom_points()

O geom_points pertence aos chamados geoms do pacote ggplot2.

É uma ferramenta muito utilizada quando se quer desenhar gráficos com pontos exatamente plotados nas coordenadas reais dos dados evitando a alteração da posição dos valores desenhando cada ponto para cada observação do conjunto de dados onde cada um desses pontos representa um par de valores X e Y do gráfico.

Deve sempre ser usado quando os dados são contínuos (ex.: altura × peso) e quando a posição exata do ponto é importante. Porém deve-se observar que, devido a sua exatidão na plotagem dos pontos pode haver sobreposição de pontos devido a valores muito próximos.

Tal caracteristica deve ser levada em consideração quando se optar pelo uso desta ferramenta.

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point()



geom_jitter()

O geom_jitter também pertence aos chamados geoms do pacote ggplot2 sendo uma espécie de variação do geom_point.

A principal diferença neste geom é que ele adiciona pequenos deslocamentos aos pontos reduzindo assim a sobre posição que pode haver no geom_point devido a proximidades dos pontos causadas pelos valores que são próximos. Visto isso esta ferramenta não precisa quanto a colocação do pontos no gráfico.

Sua utilização é mais adequada quando a muitos valores iguais para assim evitar o efeito conhecido como pontos empilhados.

Outra maneira de decidir pelo uso desta ferramenta é quando o gráfico exige o uso de variáveis categóricas como por exemplo preço por tipo de corte.

ggplot(diamonds, aes(x = cut, y = price)) +
  geom_jitter(width = 0.2)

4.2 Questão 1.4.2 - Resposta

Gramática dos Gráficos

A Gramática dos Gráficos é um modelo conceitual e teórico proposto por Leland Wilkinson que descreve gráficos estatísticos como a combinação de componentes independentes, como dados, mapeamentos estéticos, geometrias e escalas.

A ideia central é que todo gráfico pode ser construído pela combinação de componentes básicos, assim como frases são construídas por regras gramaticais.

No R, essa abordagem é implementada pelo pacote ggplot2, que permite construir gráficos por meio da adição de camadas, seguindo essa gramática.

Conforme esta teoria o usuário ao invés de escolher um gráfico pronto (barras, linhas, pizza), ele define os elementos do gráfico e como eles se relacionam.

As principais vantagens de produzir gráficos dessa forma são:

- Flexibilidade na criação de gráficos;
- Reutilização de componentes;
- Clareza na separação entre dados e forma visual;
- Gráficos mais consistentes e interpretáveis;


Os principais componentes são:

1. Dados (data)

- Conjunto de dados a ser visualizado.

2. Mapeamentos estéticos (aesthetics – aes)

Definem como as variáveis são representadas visualmente, como:
- posição (x, y);
- cor;
- tamanho;
- forma;

3. Geometrias (geoms)

Definem como os dados serão desenhados, por exemplo:
- pontos (geom_point);
- barras (geom_bar);
- linhas (geom_line);
- caixas (geom_boxplot);

4. Estatísticas (stats)

Transformações estatísticas aplicadas aos dados, como:
- contagem;
- médias;
- densidades;

5. Escalas (scales)

Controlam como os valores dos dados são convertidos em atributos visuais:
- cores;
- eixos;
- legendas;

6. Sistema de coordenadas (coordinates)

Define o sistema de referência do gráfico (cartesiano, polar, etc.).

7. Facetas (facets)

Permitem dividir o gráfico em múltiplos painéis com base em uma variável.

8. Implementação no ggplot2

O pacote ggplot2, da linguagem R, implementa diretamente a Gramática dos Gráficos ao permitir que gráficos sejam construídos pela adição incremental de camadas.

Estrutura básica:

ggplot(data = dados, aes(x, y)) +
geom_tipo() +
scale_tipo() +
theme_tipo()


Cada linha adiciona uma camada ao gráfico.

Exemplo prático

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(color = "blue") +
  labs(title = "Peso vs Consumo") +
  theme_minimal()


Neste exemplo:

• mtcars -> dados
• aes(wt, mpg) -> mapeamentos estéticos
• geom_point() -> geometria
• labs() -> rótulos
• theme_minimal() -> tema