La función ggplot() en R: gráficos por capas (y cuándo basta con plot())
ggplot() construye gráficos sumando capas. Es de ggplot2, hay que instalarlo:
install.packages("ggplot2")
library(ggplot2)
Su lógica es distinta a la de plot(): en vez de una función que lo dibuja todo, vas encadenando piezas con el signo +.
Ejemplo simple
library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) +
geom_point()
Tres piezas ahí:
ggplot(datos, ...)→ los datos.aes(...)→ qué columna va en cada eje. Es el "mapeo estético".geom_point()→ cómo dibujarlo. Puntos, en este caso.
Sin el geom_ no verías nada: ggplot() a secas solo prepara el lienzo.
Añadir capas
Aquí está su gracia. Cada + suma un elemento:
ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color = Species)) +
geom_point() +
labs(title = "Relación entre sépalo y pétalo",
x = "Largo del sépalo",
y = "Largo del pétalo")
Al meter color = Species dentro de aes(), ggplot colorea por especie y añade la leyenda solo. Eso en R base tendrías que montarlo a mano, y es la ventaja real de ggplot2.
Ejemplo algo más completo
ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
geom_boxplot() +
labs(title = "Distribución por especie") +
theme_minimal()
Cambiando el geom_ cambias el tipo de gráfico sin tocar nada más: geom_col() para barras, geom_line() para líneas, geom_histogram() para histogramas.
Lo mismo con R base
Los dos ejemplos anteriores, sin instalar nada:
plot(iris$Sepal.Length, iris$Petal.Length,
col = iris$Species, pch = 19,
main = "Relación entre sépalo y pétalo",
xlab = "Largo del sépalo", ylab = "Largo del pétalo")
boxplot(Sepal.Length ~ Species, data = iris,
main = "Distribución por especie")
El boxplot sale prácticamente igual. En el de dispersión, R base colorea por especie pero no pone la leyenda: hay que añadirla con legend().
Nuestra recomendación: mientras exploras tus datos, usa plot(), boxplot() y hist() de R base → escribes menos y no dependes de nada. Reserva ggplot2 para el gráfico final que va a ver otra persona, donde sí compensa el control fino sobre leyendas, escalas y temas.