R ggplot2 Quickstart: Receitas Rápidas para Gráficos Confiáveis
Problem
Analistas têm dificuldade em produzir gráficos consistentes em R quando os prazos são apertados. Alternar entre geoms, escalas e temas sem um modelo leva a visuais poluídos e retrabalho constante.
Agitate
Estéticas mal colocadas, legends esquecidas e escalas de cores desalinhadas criam gráficos que induzem stakeholders ao erro. O tempo é gasto ajustando defaults em vez de focar no sinal.
Solution
Use um conjunto compacto de receitas de ggplot2 que mantenham as estéticas explícitas, separem mapeamentos de configurações fixas e apliquem um tema limpo. Os padrões abaixo cobrem os tipos de gráfico mais pedidos e como usar facet para comparações.
Scatter: relacionamentos e linhas de tendência
library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
geom_point(size = 3, alpha = 0.8) +
geom_smooth(method = "lm", se = FALSE, linewidth = 0.8) +
labs(color = "Cylinders", x = "Weight", y = "MPG") +
theme_minimal()Line: séries temporais ou categorias ordenadas
ggplot(economics, aes(x = date, y = unemploy)) +
geom_line(color = "#1f77b4", linewidth = 1) +
labs(x = "Date", y = "Unemployment") +
scale_x_date(date_breaks = "2 years", date_labels = "%Y") +
theme_minimal()Bar: contagens ou totais
ggplot(diamonds, aes(x = cut, fill = cut)) +
geom_bar(width = 0.7, color = "white") +
labs(x = "Cut", y = "Count") +
theme_minimal() +
theme(legend.position = "none")Box and violin: comparações de distribuições
ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
geom_violin(alpha = 0.4, color = NA) +
geom_boxplot(width = 0.18, outlier.shape = NA, alpha = 0.8) +
labs(x = NULL, y = "Sepal Length") +
theme_minimal() +
theme(legend.position = "none")Facets para comparações rápidas
ggplot(diamonds, aes(carat, price, color = cut)) +
geom_point(alpha = 0.4, size = 1.5) +
facet_wrap(~ color) +
labs(x = "Carat", y = "Price") +
theme_light()Geoms e melhores casos de uso
| Geom | Tipo de dado | Melhor para | Dica |
|---|---|---|---|
geom_point() | numérico vs numérico | relacionamentos, clusters | Faça map de cor/formato para categorias; adicione geom_smooth() para tendência. |
geom_line() | x ordenado, y numérico | séries temporais, sequências | Mantenha uma linha por grupo com group=; evite erros de ordenação. |
geom_bar() (contagem) / geom_col() (pré-agregado) | categórico | contagens ou totais | Use position = "fill" para porcentagens. |
geom_boxplot() | categórico vs numérico | comparar medianas/IQR | Combine com coord_flip() para labels longos. |
geom_violin() | categórico vs numérico | forma da distribuição | Combine com boxplots para mostrar quartis. |
geom_histogram() | único numérico | distribuição | Defina bins ou binwidth explicitamente. |
Estéticas vs. configurações fixas
- Faça map de dados dentro de
aes():aes(color = species). - Defina valores fixos fora de
aes():geom_point(color = "steelblue"). - Use funções
scale_*para formatar valores e controlar paletas.
Checklist de tema e rotulagem
- Comece com
theme_minimal()outheme_light()para defaults limpos. - Adicione
labs(title, subtitle, caption)para contexto; mantenha eixos concisos. - Oculte legends redundantes com
theme(legend.position = "none")quando as cores duplicarem facets ou labels. - Para publicação, ajuste tamanhos de fonte via
theme(text = element_text(size = 12)).
Template inicial
base_plot <- ggplot(data, aes(x = x_var, y = y_var)) +
geom_point(color = "#4e79a7", alpha = 0.7) +
labs(
title = "Headline metric",
x = "X axis",
y = "Y axis",
caption = "Source: internal data"
) +
theme_minimal()Guias relacionados
- Limpe seus dados antes de plotar: R dplyr Data Wrangling Pipeline
- Opções específicas para heatmap: pheatmap in R
- Crie tabelas base rapidamente: How to Create a Dataframe in R