Código
library(ggplot2)
ggplot(
data = penguins,
aes(
x = bill_len,
y = bill_dep,
color = species
)
) +
geom_point(size = 2) +
labs(title = "Color heredado por todas las capas")
Hasta ahora hemos modificado diferentes estéticas como shape, size y alpha. Estas estéticas pueden especificarse dentro de la llamada a ggplot() o dentro de una capa particular, como geom_point().
La diferencia radica en el alcance de las estéticas:
ggplot() son globales y se heredan por todas las capas.geom() son locales y sólo afectan a esa capa.Estas son como las que ya hemos usado: las variables bill_len, bill_dep y species se definen dentro de ggplot(). Por lo tanto, cualquier capa añadida posteriormente heredará estas estéticas.
library(ggplot2)
ggplot(
data = penguins,
aes(
x = bill_len,
y = bill_dep,
color = species
)
) +
geom_point(size = 2) +
labs(title = "Color heredado por todas las capas")
También podemos especificar las estéticas dentro de una capa. En este caso, sólo esa capa utilizará dichas estéticas.
ggplot(data = penguins) +
geom_point(
aes(
x = bill_len,
y = bill_dep,
color = species
),
size = 2
) +
labs(title = "Las estéticas se definen dentro de geom_point()")
En ambos casos obtenemos la misma figura. La diferencia se hace evidente cuando utilizamos varias capas.
Retomemos el caso en el que añadimos una línea de tendencia además de los puntos.
ggplot(
data = penguins,
aes(
x = bill_len,
y = bill_dep,
color = species
)
) +
geom_point(alpha = 0.7) +
geom_smooth(se = FALSE)
Como color = species fue definido de forma global, tanto los puntos como las líneas se colorean según la especie.
Si queremos que sólo los puntos tengan colores diferentes y que la línea de ajuste sea única, podemos definir el color únicamente en geom_point().
ggplot(
data = penguins,
aes(
x = bill_len,
y = bill_dep
)
) +
geom_point(
aes(color = species),
alpha = 0.7
) +
geom_smooth(
color = "black",
se = FALSE
)`geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Warning: Removed 2 rows containing non-finite outside the scale range
(`stat_smooth()`).
Warning: Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).

Ahora el color depende de la especie únicamente para los puntos, mientras que la línea de tendencia se calcula usando todos los datos y aparece en negro.
ggplot() las estéticas que serán compartidas por varias capas.geom() las estéticas que sólo deban afectar a esa capa.Esta forma de trabajar permite construir gráficos complejos de manera modular y es una de las principales ventajas de ggplot2.
Podemos colocar también el estético de shape dentro de las geometrías y asociarlo a una variable.
ggplot(
data = penguins,
aes(
x = bill_len,
y = bill_dep
)
) +
geom_point(
aes(shape = species),
alpha = 0.7
)
O incluso usar el tamaño y alfa para variables continuas.
ggplot(
data = penguins,
aes(
x = bill_len,
y = bill_dep
)
) +
geom_point(
aes(size = body_mass, alpha = flipper_len)
)+
labs(title = "Tamaño y alpha usando variables continuas")