El paquete lattice ofrece flexibilidades especiales para representar interacciones y particularmente datos multivariados. Sus funciones son independientes de las funciones gráficas principales y se caracterizan por tener una gramática ligeramente distinta. No son tan elegantes, pero son muy fáciles de usar, siendo útiles para examinar datos rápidamente.
library(lattice)
read.table("fumadores.txt", header=T)
fum <-
#gráficos bivariados
# Notar que ingresar los datos como una fórmula es más eficiente
xyplot(ca.pulm ~ alt, data = fum)
xyplot(ca.pulm ~ alt | edad, data = fum)
xyplot(ca.pulm ~ alt | fuma, data = fum)
xyplot(ca.pulm ~ alt | fuma*sexo, data = fum)
xyplot(ca.pulm ~ alt, groups = fuma, data = fum)
# manipular alguna de sus opciones...
xyplot(ca.pulm ~ alt, groups = fuma, data = fum, xlab = "altura",
ylab = "capacidad\npulmonar", col = c("red", "black"), pch = 19,
lwd = 2, key = list(text = list(c("no fumadores", "fumadores")),
space = "bottom",
points = list(pch = 19, col = c("red", "black"))))
# otros gráficos comunes
bwplot(ca.pulm ~ fuma | sexo, data = fum)
histogram(~ ca.pulm, data = fum)
densityplot(~ ca.pulm | fuma, data = fum)
Este paquete ofrece gráficos elegantes e intuitivos. Sin embargo, su escritura posee una gramática propia (una especie de “dialecto” dentro de R), por lo que requiere cierto tiempo hasta lograr su aprendizaje. La ayuda básica para ggplot2 puede hallarse en la página https://ggplot2.tidyverse.org/reference
Un gráfico de ggplot2 debe contar de al menos estos tres elementos:
library(ggplot2)
library(viridis)
library(patchwork)
read.table("fumadores.txt", header=T)
fum <-
#utilizando ggplot
ggplot(data = fum, aes(x = edad, y = ca.pulm)) + geom_point()
# notar como los gráficos se van acumulando
# (no hacer esto, salvo para buscar errores)
ggplot(data = fum)
g1 <- g1 + geom_point(mapping = aes(x = edad, y = ca.pulm))
g2 <-
g2
# modificando algunos detalles comunes
# notar el + al final (equivale a una línea continua)
# notar la diferencia entre colocar variables adentro o afuera de aes()
ggplot(data = fum) +
g1 <- geom_point(aes(x = edad, y = ca.pulm, shape = sexo), size = 3, alpha = 0.4) +
xlab("Edad") +
ylab("Capacidad Pulmonar") +
theme_bw()
g1
# modificando los colores
ggplot(data = fum) +
c1 <- geom_point(aes(x = edad, y = ca.pulm, color = fuma), size = 3, alpha = 0.3) +
scale_colour_manual(values=c("red", "black"))
c1
# modificando los colores con una escala continua
ggplot(data = fum) +
c2 <- geom_point(aes(x = edad, y = ca.pulm, color = alt), size = 3)
c2
# modificando los colores con una escala de viridis
ggplot(data = fum) +
c3 <- geom_point(aes(x = edad, y = ca.pulm, color = alt), size = 3) +
scale_color_viridis_c(option = "magma")
c3
# modificando tamaños con una escala continua
ggplot(data = fum) +
t1 <- geom_point(aes(x = edad, y = ca.pulm, size = alt, color = fuma))
t1
# diferencia entre mapeos locales y generales
ggplot(data = fum) +
z1 <- geom_point(mapping = aes(x = edad, y = ca.pulm, color = sexo)) +
geom_smooth(mapping = aes(x = edad, y = ca.pulm))
z1
ggplot(data = fum, aes(x = edad, y = ca.pulm, color = sexo)) +
z2 <- geom_point() +
geom_smooth()
z2
# Faceting (división del la ventana gráfica como en lattice)
ggplot(data = fum) +
f1 <- geom_point(aes(x = edad, y = ca.pulm, color = fuma), size = 3) +
theme_bw() +
facet_grid(. ~ sexo)
f1
ggplot(data = fum) +
f2 <- geom_point(aes(x = edad, y = ca.pulm, color = fuma), size = 3) +
scale_color_manual(values = c("red", "blue")) +
theme_bw() +
facet_grid(fuma ~ .)
f2
ggplot(data = fum) +
f3 <- geom_point(aes(x = edad, y = ca.pulm, color = fuma), size = 2) +
theme_bw() +
scale_color_manual(values = c("red", "blue")) +
facet_wrap(~fuma*sexo, ncol = 2)
f3
# gráficos de cajas
ggplot(data = fum) +
b1 <- geom_boxplot(aes(x = fuma, y = ca.pulm, fill = fuma)) +
scale_fill_viridis_d()
b1
# histogramas
ggplot(data = fum) +
h1 <- geom_histogram(aes(x = ca.pulm), fill="red")
h1
# combinando gráficos (patchwork)
/ b1
c3
| b1
c3
/ (b1 + h1) c3
En este práctico tambien exploramos las opciones gráficas de viridis. Las propiedades de estas escalas de color (inclusivas, perceptualmente uniformes, trasladables a escalas de grises) son muy recomendables para publicaciones. Para conocer más revisar viridis.
¿Sabías que hay paletas inspiradas en Los Simpson, en paisajes o en las películas de Wes Anderson? Revisá los paquetes ggsci, wesanderson y wacolors.