1. Introducción

En R existen varias herramientas para realiza gráficos, pero ggplot2 es una de las más elegantes y versátiles, y forma parte del Tidyverse, el cual es una colección de paquetes de R diseñados para ser usados en proyectos de ciencia de datos, compartiendo una sola filosofía, gramática y estructura de datos.

En específico, ggplot2 implementa la gramática de gráficos, el cual es un sistema coherente para describir y construir gráficos. Básicamente, esta librería va construyendo visualizaciones a través de capas que se colocan una sobre otra (para conocer su trasfondo teórica visita: http://vita.had.co.nz/papers/layered-grammar.pdf). Su único requisito de uso es tener instalada la librería tidyverse, para lo cual es indispensable que la carguemos.

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.3     v dplyr   1.0.7
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   2.0.0     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

Dado que este paquete carga varias librerías al mismo tiempo puede existir conflictos al usar una función (i.e. pueden existir varias librerías con una función del mismo nombre). Si queremos ser específicos sobre el origen de una función usaremos la forma especial paquete::funcion().

2. Primeros pasos

Para aprender la sintaxis de ggplot2 usaremos el dataset incluido en esta librería, conocido como mpg, el cual contiene 38 observaciones de modelos de automóviles e incluye variables como el tipo de transmisión, la eficiencia del combustible, etc.

Veamos qué tienen estos datos:

mpg
## # A tibble: 234 x 11
##    manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
##    <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
##  1 audi         a4           1.8  1999     4 auto~ f        18    29 p     comp~
##  2 audi         a4           1.8  1999     4 manu~ f        21    29 p     comp~
##  3 audi         a4           2    2008     4 manu~ f        20    31 p     comp~
##  4 audi         a4           2    2008     4 auto~ f        21    30 p     comp~
##  5 audi         a4           2.8  1999     6 auto~ f        16    26 p     comp~
##  6 audi         a4           2.8  1999     6 manu~ f        18    26 p     comp~
##  7 audi         a4           3.1  2008     6 auto~ f        18    27 p     comp~
##  8 audi         a4 quattro   1.8  1999     4 manu~ 4        18    26 p     comp~
##  9 audi         a4 quattro   1.8  1999     4 auto~ 4        16    25 p     comp~
## 10 audi         a4 quattro   2    2008     4 manu~ 4        20    28 p     comp~
## # ... with 224 more rows

3. Crear un ggplot

Para realizar un gráfico con estos datos arrancaremos con una capa inicial a través de la función ggplot(), la cual crea un sistema de coordenadas sobre el cual realizaremos la visualización. Esta capa, al igual que el resto de capas, recibe como argumento principal un mapping, el cual se define a través de la función aes(). Con este argumento asignamos las variables de nuestro conjunto de datos al gráfico que estemos realizando. Los principales argumentos de aes() son x e y; es decir, las variables a graficar en los ejes horizontal y vertical.

Sobre la capa inicial podremos ir agregando geoms o geometrías, las cuales son capas que dibujan líneas, áreas, puntos, polígonos, etc. Las funciones de geometrías siempre inician con geom_. Veamos un ejemplo de un gráfico de dispersión del tamaño del motor versus la eficiencia del combustible, posible de dibujar gracias a la función geom_point().

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

En el transcurso del curso que estás recibiendo harás uso de varias geometrías (que incluso forman parte de otras librerías) para visualizar tus datos. Por ello ¡no dudes en hacer preguntas!

4. Mapeo estético

Supongamos ahora que queremos prestar particular atención a ciertos datos en específico, y para ello queremos, por ejemplo, pintarlos de un color particular. Para ello realizaremos un mapeo estético. Una estética nos permite editar las propiedades visuales de los objetos en una visualización. Estas estéticas incluyen tamaño, forma y color de las figuras que estemos mostrando. Para ello existen varios argumentos dentro de la documentación de cada geometría. Veámos estas estéticas en acción.

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

En esta gráfica hemos cambiado el color de los puntos con el argumento color dentro de la función aes, haciendo match con la variable class, la cual nos indica el tipo de vehículo dibujado.

Nótese en este punto que ggplot2 ha escogido automáticamente el color.

¿Qué pasa en cambio si queremos cambiar una estética manualmente? Pues lo único que tenemos que hacer es declarar dicha estética fuera de la función aes, como se muestra a continuación.

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

¿Has entendido todos los conceptos? No dudes en hacer preguntas. ¡Nos vemos en una próxima ocasión!