7.1 Elementos

Para crear gráficos en ggplot2 se requieren los siguientes elementos:

  • Datos
  • Capas
  • Escalas
  • Sistema de coordenadas
  • Faceting
  • Temas

Estos elementos se incluyen por medio de funciones y argumentos que se explicarán a continuación.

7.1.1 Base

Existen tres componentes básicos en ggplot2:

  1. data Dataframe de datos a graficar.
  2. aes aesthetic mappings. Mapeo de las variables del conjunto de datos y la propiedades visuales a valores estéticos de la gráfica.
  3. geoms Al menos una capa con objetos geométricos que describan como tratar cada observación.


Para entender el lenguaje, usaremos el conjunto de datos pre cargado mpg que tiene información sobre el consumo de combustible en modelos populares de automóviles.

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" ...

Capa principal

La función ggplot() ayuda definir la capa principal de los datos a mapear y los atributos estéticos principales.

En este caso definimos los datos fuente data = mpg y se agregan los valores estéticos de los ejes x = displ y y = hwy.

ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) 

Esta gráfica muestra la capa principal en la que el eje x muestra el desplazamiento del motor en litros (displ)

summary(mpg$displ)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.600   2.400   3.300   3.472   4.600   7.000

y el eje y el rendimiento de gasolina por millas en carretera (hwy).

summary(mpg$hwy)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   12.00   18.00   24.00   23.44   27.00   44.00


El sistema de coordenadas por defecto en ggplot2 es el plano cartesiano.

Sobre esta capa principal es posible agregar más capas. En particular, se agregará una capa de objetos geométricos.

Capa de objetos geométricos

Ahora, buscamos hacer un gráfico de dispersión, por lo que es necesario agregar una capa de objetos geométricos que mapee cada observación como un punto con la función geom_point().

Layers

Con el signo + agregamos capas al gráfico.

ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
  geom_point() 


En resumen, producimos una gráfica de dispersión definida por los componentes:

  1. Datos: dataframe data = mpg.
  2. Mapeo estético: aes(x = displ y y = hwy).
  3. Objeto geométrico: + geom_point().


7.1.2 Colores, formas y tamaños

Para agregar variables adicionales a la gráfica se pueden usar más valores estéticos como: color, forma y tamaño.

Estos valores estéticos se agregan a la capa con la función aes().

Siguiendo el ejemplo del gráfico de dispersión anterior, ahora se quiere incluir la variable clase de automóvil (class) como un valor estético de color.

table(mpg$class)
## 
##    2seater    compact    midsize    minivan     pickup subcompact 
##          5         47         41         11         33         35 
##        suv 
##         62
ggplot(mpg, aes(x = displ, y = hwy,
                color = class)) + 
  geom_point() 

Esto le da un color a cada punto u observación dependiendo de la clase de automóvil al que pertenece. La leyenda del lado derecho indica que color representa cada valor de la variable class.


El mapeo de los atributos estéticos depende del tipo de variable, las variables categóricas se mapean a distintas escalas que las variables continuas:

  Categórica 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