Utilizaremos el paquete ggplot2 y cubriremos los siguientes puntos:
* Gráfica de dispersión
* Páneles
* Distintos tipos de gráficas

Gráficas de dispersión

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()

Ejercicio 1

Experimenta con los aesthetics color (color), tamaño (size) y forma (shape).

ggplot2

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)

¿Qué problema tiene la siguiente gráfica?

p <- ggplot(mpg, aes(x = cty, y = hwy))
p + geom_point() 

p + geom_jitter() 

¿Cómo podemos mejorar la siguiente gráfica?

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()

Ejercicio 2

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?