Trabalho: Visualização de Dados
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()
# Gráfico de dispersão
ggplot(data = mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
geom_point(size = 3, shape=18) +
labs(
title = "Gráfico: Relação entre Peso e Consumo de Combustível",
x = "Peso do carro (wt)",
y = "Milhas por galão (mpg)",
color = "Cilindros (cyl)"
) +
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()
# Preparação dos dados
dados <- diamonds %>%
mutate(
cut = factor(
cut,
levels = c("Fair", "Good", "Very Good", "Premium", "Ideal"),
labels = c("Regular", "Bom", "Muito Bom", "Premium", "Ideal")
)
)
# Gráfico de barras
ggplot(dados, aes(x = fct_infreq(cut), fill = cut)) +
geom_bar(width = 0.7) +
geom_text(
stat = "count",
aes(label = ..count..),
vjust = -0.5,
size = 4
) +
labs(
title = "Gráfico: Contagem de Diamantes por Tipo de Corte",
x = "Tipo de Corte",
y = "Contagem"
) +
scale_fill_brewer(palette = "RdYlGn") +
theme_minimal()
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
dados <- 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, aes(x = cut, y = price, fill = cut)) +
geom_boxplot(outlier.size = 1, outlier.alpha = 0.2, color = "#444444") +
stat_summary(fun = "mean", geom = "point", shape = 23, size = 2, fill = "white") +
labs(
title = "Gráfico: Preço dos Diamantes por Tipo de Corte",
x = "Tipo de Corte",
y = "Preço em Dólares (US$)"
) +
scale_fill_manual(
values = c(
"Regular" = "#A0A0A0",
"Bom" = "#708090",
"Muito Bom" = "#4682B4",
"Premium" = "#1F4E79",
"Ideal" = "#002060"
)
) +
theme_light() +
theme(
legend.position = "none",
axis.text.x = element_text(angle = 30, hjust = 1, size = 10),
panel.grid.major.x = element_blank()
)
Questão 1 - Explique a diferença entre os
geoms geom_point() e geom_jitter(). Em que situação
cada um é mais apropriado?
Questão 2 - Descreva o conceito de ”Gramática
dos Gráficos” e como ele é implementado no ggplot2.
Diferença Técnica e Aplicabilidade
geom_point(): Plota os dados em sua
posição exata. É a escolha ideal para variáveis contínuas onde a
precisão da coordenada é vital. No entanto, sofre com o
overplotting (sobreposição), onde pontos com valores idênticos
se escondem atrás de outros.geom_jitter(): Adiciona um pequeno
ruído aleatório (deslocamento) horizontal e vertical. É preferível
quando trabalhamos com variáveis categóricas ou dados discretos, pois
permite visualizar a densidade de pontos em uma mesma
categoria.Exemplo Comparativo com diamonds:
p1 <- ggplot(diamonds, aes(x = cut, y = price)) +
geom_point(alpha = 0.3) +
labs(subtitle = "geom_point() Note a sobreposição vertical") +
theme_minimal()
p2 <- ggplot(diamonds, aes(x = cut, y = price)) +
geom_jitter(alpha = 0.3, width = 0.2, color = "darkblue") +
labs(subtitle = "geom_jitter() Revela a dispersão dos dados") +
theme_minimal()
p1 + p2Fundamentação Teórica
A Gramática
dos Gráficos, proposta por Leland Wilkinson, é
a espinha dorsal do ggplot2. Ela não foca no “nome” do gráfico
(barra, pizza, linha), mas nos elementos que o compõem. No R, isso é
implementado através do empilhamento de camadas independentes unidas
pelo operador +.
Os 7 Pilares da Gramática:
1. Data (Dados): O objeto (data.frame) que
contém as informações.
2. Aesthetics (Mapeamento):
Define como as variáveis “vestem” o gráfico (X, Y, cor, tamanho).
3. Geometries (Geometrias): A forma física da
representação (pontos, barras, linhas).
4.
Statistics (Estatísticas): Transformações aplicadas aos dados
(contagens, médias).
5. Scales (Escalas): Controlam
como os valores numéricos viram cores ou posições no eixo.
6. Coordinates (Coordenadas): O sistema de
visualização (Cartesiano ou Polar).
7. Themes
(Temas): Elementos estéticos não-dados (fundo, fontes, margens).
Exemplo de Construção por Camadas:
# Demonstração da lógica de camadas
ggplot(data = mtcars) + # 1. Dado
aes(x = wt, y = mpg, color = factor(cyl)) + # 2. Mapeamento
geom_point() + # 3. Geometria
geom_smooth(method = "lm", se = FALSE) + # 4. Estatística (Regressão)
labs(title = "Aplicação da Gramática das Camadas") + # 5. Escala/Rótulo
theme_light() # 6. Tema