A diferença principal reside no tratamento da sobreposição de pontos (overplotting), que ocorre quando múltiplos dados compartilham as mesmas coordenadas \(x\) e \(y\).
geom_point():
Desenha pontos exatamente nas coordenadas especificadas.
Conjuntos de dados com valores contínuos distintos, onde a sobreposição é mínima e a precisão da coordenada é crucial.
Se muitos pontos caírem no mesmo local, eles ficarão escondidos uns atrás dos outros, distorcendo a percepção da densidade dos dados.
geom_jitter():
Adiciona uma pequena quantidade de ruído aleatório (jitter) aos pontos, espalhando-os ligeiramente nas coordenadas.
Ideal para dados com variáveis discretas ou categóricas (como contagens ou ratings em escalas), onde a sobreposição é esperada.
Permite que todos os pontos sejam visualizados, revelando a densidade real das observações em um determinado ponto.
O conceito de “Gramática dos Gráficos” (Grammar of Graphics), popularizado por Leland Wilkinson e implementado no ggplot2 por Hadley Wickham, é uma estrutura conceitual que define como os elementos de um gráfico são combinados e construídos de forma modular e coerente.
Em vez de tratar gráficos como tipos predefinidos (ex: “boxplot”, “histograma”), a Gramática os vê como uma montagem de componentes independentes que podem ser combinados de forma flexível.
# Introdução ao ggplot2
mtcars_prep <- mtcars %>%
mutate(cyl = as.factor(cyl))
ggplot(data = mtcars_prep) +
aes(x = wt, y = mpg, color = cyl) +
geom_point(size = 3) +
labs(
title = "Relação entre Peso e Consumo de Combustível",
x = "Peso do Carro (Milhares de Libras - wt)",
y = "Milhas por Galão (MPG - Consumo)",
color = "Cilindros"
) +
theme_minimal()
# 2. Customização e Gráficos Categóricos
## 2.1 Exercício - Gráfico de Barras (diamonds)
ggplot(data = diamonds) +
# (a) Ordenar as barras em ordem decrescente (usando reorder)
aes(x = reorder(cut, cut, function(x) -length(x)), fill = cut) +
geom_bar() +
labs(
title = "Contagem de Diamantes por Qualidade de Corte",
x = "Qualidade do Corte",
y = "Contagem de Diamantes"
) +
# (b) Paleta de cores divergente (Brewer)
scale_fill_brewer(palette = "RdYlGn") +
theme_minimal() +
# (c) Adicionar rótulos de valor em cada barra
geom_text(
stat = "count",
aes(label = after_stat(count)),
vjust = -0.5, # Posição vertical do texto
size = 3.5
) +
theme(legend.position = "none") # Remoção da legenda de preenchimento
# 2.2 Boxplot Avançado (daimonds)
# (a) Cores customizadas para cada categoria de 'cut'
cores_personalizadas <- c(
"Fair" = "#E41A1C",
"Good" = "#377EB8",
"Very Good" = "#4DAF4A",
"Premium" = "#984EA3",
"Ideal" = "#FF7F00"
)
# Criação do boxplot
ggplot(data = diamonds) +
aes(x = cut, y = price, fill = cut) +
geom_boxplot() +
# (b) Títulos e rótulos em português
labs(
title = "Distribuição do Preço por Tipo de Corte",
subtitle = "Dataset Diamonds: Análise de Preço",
x = "Qualidade do Corte",
y = "Preço (Dólares Americanos)"
) +
scale_fill_manual(values = cores_personalizadas) + # (b) Aplica as cores customizadas
theme_minimal() +
theme(
# (c) Ajuste do ângulo dos rótulos do eixo X
axis.text.x = element_text(angle = 45, hjust = 1),
# (d) Remoção da legenda
legend.position = "none"
)
# Conclusão
## Análise concluída com 53940 observações e 10 variáveis.