Prova Pós Graduação
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()
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()
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)
)
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.
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)
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