Utilizaremos el paquete ggplot2 y cubriremos los siguientes puntos:
* Gráfica de dispersión
* Páneles
* Distintos tipos de gráficas
Usaremos el conjunto de datos mpg que se incluye en R, puedes encontrar información de esta base de datos tecleando ?mpg
.
library(ggplot2)
?mpg
# primeras líneas
head(mpg)
## manufacturer model displ year cyl trans drv cty hwy fl class
## 1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
## 2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
## 3 audi a4 2.0 2008 4 manual(m6) f 20 31 p compact
## 4 audi a4 2.0 2008 4 auto(av) f 21 30 p compact
## 5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
## 6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact
# estructura de la base
str(mpg)
## Classes 'tbl_df', 'tbl' and 'data.frame': 234 obs. of 11 variables:
## $ manufacturer: chr "audi" "audi" "audi" "audi" ...
## $ model : chr "a4" "a4" "a4" "a4" ...
## $ displ : num 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
## $ year : int 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
## $ cyl : int 4 4 4 4 6 6 6 4 4 4 ...
## $ trans : chr "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
## $ drv : chr "f" "f" "f" "f" ...
## $ cty : int 18 21 20 21 16 18 18 18 16 20 ...
## $ hwy : int 29 29 31 30 26 26 27 26 25 28 ...
## $ fl : chr "p" "p" "p" "p" ...
## $ class : chr "compact" "compact" "compact" "compact" ...
# resumen general
summary(mpg)
## manufacturer model displ year
## Length:234 Length:234 Min. :1.600 Min. :1999
## Class :character Class :character 1st Qu.:2.400 1st Qu.:1999
## Mode :character Mode :character Median :3.300 Median :2004
## Mean :3.472 Mean :2004
## 3rd Qu.:4.600 3rd Qu.:2008
## Max. :7.000 Max. :2008
## cyl trans drv cty
## Min. :4.000 Length:234 Length:234 Min. : 9.00
## 1st Qu.:4.000 Class :character Class :character 1st Qu.:14.00
## Median :6.000 Mode :character Mode :character Median :17.00
## Mean :5.889 Mean :16.86
## 3rd Qu.:8.000 3rd Qu.:19.00
## Max. :8.000 Max. :35.00
## hwy fl class
## Min. :12.00 Length:234 Length:234
## 1st Qu.:18.00 Class :character Class :character
## Median :24.00 Mode :character Mode :character
## Mean :23.44
## 3rd Qu.:27.00
## Max. :44.00
Haremos un diagrama de dispersión. Notemos que debemos especificar explicitamente que base de datos usamos, este es el primer argumento en la función ggplot, después dentro de aes() escribimos la variable que queremos graficar en cadaa eje.
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point()
Podemos representar variables adicionales usando otras características estéticas (aesthetics) como forma, color o tamaño.
ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
geom_point()
Experimenta con los aesthetics color (color), tamaño (size) y forma (shape).
El mapeo de las propiedades estéticas depende del tipo de variable, las variables discretas (por ejemplo, genero, escolaridad, país) se mapean a distintas escalas que las variables continuas (variables numéricas como edad, estatura, etc.):
Discreta | Continua | |
---|---|---|
Color | Arcoiris de colores | Gradiente de colores |
Tamaño | Escala discreta de tamaños | Mapeo lineal entre el radio y el valor |
Forma | Distintas formas | No aplica |
La segunda parte de la instrucción de graficar (después del símbolo +) corresponde a las geometrías, geoms, que controlan el tipo de gráfica
p <- ggplot(mpg, aes(x = displ, y = hwy))
p + geom_line() # en este caso no es una buena gráfica
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point()
qplot(carat, price, data = diamonds, colour = clarity)
p <- ggplot(mpg, aes(x = cty, y = hwy))
p + geom_point()
p + geom_jitter()
ggplot(mpg, aes(x = class, y = hwy)) +
geom_point()
Intentemos reodenar los niveles de la variable clase
ggplot(mpg, aes(x = reorder(class, hwy), y = hwy)) +
geom_point()
Podemos probar otros geoms.
ggplot(mpg, aes(x = reorder(class, hwy), y = hwy)) +
geom_jitter()
ggplot(mpg, aes(x = reorder(class, hwy), y = hwy)) +
geom_boxplot()
También podemos usar más de un geom!
ggplot(mpg, aes(x = reorder(class, hwy), y = hwy)) +
geom_jitter() +
geom_boxplot()
Lee la ayuda de reorder y repite las gráficas anteriores ordenando por la mediana de hwy. ¿Cómo harías para graficar los puntos encima de las cajas de boxplot?