R ggplot2 Guía Rápida: Recetas Rápidas para Gráficos Confiables
Problema
A los analistas les cuesta producir gráficos consistentes en R cuando los plazos son ajustados. Cambiar entre geoms, escalas y temas sin una plantilla lleva a visualizaciones ruidosas y a correcciones repetidas.
Agitación
Estéticas mal ubicadas, leyendas olvidadas y escalas de color desajustadas crean gráficos que engañan a las partes interesadas. Se pierde tiempo ajustando valores por defecto en lugar de enfocarse en la señal.
Solución
Utiliza un conjunto compacto de recetas de ggplot2 que mantengan las estéticas explícitas, separen los mapeos de las configuraciones fijas y apliquen un tema limpio. Los patrones siguientes cubren los tipos de gráficos más solicitados y cómo usar facetas para comparaciones.
Dispersión: relaciones y líneas de tendencia
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()Línea: series temporales o categorías 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()Barras: conteos o totales
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")Cajas y violín: comparación de distribuciones
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")Facetas para comparaciones 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 y mejores casos de uso
| Geom | Tipo de dato | Mejor para | Consejo |
|---|---|---|---|
geom_point() | numérico vs numérico | relaciones, clústeres | Mapea color/forma a categorías; añade geom_smooth() para la tendencia. |
geom_line() | x ordenado, y numérico | series temporales, secuencias | Mantén una línea por grupo con group=; evita errores de ordenación. |
geom_bar() (conteo) / geom_col() (pre-agregado) | categórico | conteos o totales | Usa position = "fill" para porcentajes. |
geom_boxplot() | categórico vs numérico | comparar medianas/IQR | Combínalo con coord_flip() para etiquetas largas. |
geom_violin() | categórico vs numérico | forma de la distribución | Combínalo con boxplots para mostrar cuartiles. |
geom_histogram() | numérico único | distribución | Define explícitamente bins o binwidth. |
Estéticas vs. configuraciones fijas
- Mapea datos dentro de
aes():aes(color = species). - Configura valores fijos fuera de
aes():geom_point(color = "steelblue"). - Usa funciones
scale_*para dar formato a valores y controlar paletas.
Lista de verificación de temas y etiquetado
- Comienza con
theme_minimal()otheme_light()para valores por defecto limpios. - Añade
labs(title, subtitle, caption)para contexto; mantén ejes breves. - Oculta leyendas redundantes con
theme(legend.position = "none")cuando los colores duplican facetas o etiquetas. - Para publicación, ajusta tamaños de fuente con
theme(text = element_text(size = 12)).
Plantilla 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()Guías relacionadas
- Limpia tus datos antes de graficar: R dplyr Data Wrangling Pipeline
- Opciones específicas para mapas de calor: pheatmap in R
- Crea tablas base rápidamente: How to Create a Dataframe in R