Introducción a la Visualización

Resumen

Enseñando: 20 min
Ejercicios: 15 min
Preguntas
  • ¿Cuáles son los aspectos básicos para crear gráficos en R?

Objectivos
  • Ser capaz de usar ggplot2 para generar histogramas y gráficos de barras.

  • Aplicar capas geométricas y estéticas a un gráfico de ggplot.

  • Manipular la estética de un gráfico usando diferentes colores y parámetros de posición.

Graficar nuestros datos es una de las mejores formas de explorarlos de manera rápida y ver relaciones entre diferentes variables. Hay tres sistemas principales para gráficos en R, el sistema base de gráficos, el paquete lattice, y el paquete ggplot2. Hoy y mañana aprenderemos acerca del paquete ggplot2, ya que es el más efectivo para crear gráficos con calidad de publicación. En este episodio, vamos a introducir los aspectos claves de ggplot y haremos algunos gráficos de ejemplo. Ampliaremos estos conceptos y veremos cómo se aplican a datos geoespaciales cuando comencemos a trabajar con datos geoespaciales en la lección R para datos Ráster y Vectoriales.

ggplot2 está basado en la gramática de gráficos, la idea de que cualquier gráfico se puede expresar a partir del mismo conjunto de componentes: un conjunto de datos, un sistema de coordenadas , y un conjunto de geoms–la representación visual de los puntos de datos. La clave para entender ggplot2 es pensar una figura como un conjunto de capas. Esta idea puede ser familiar si has usado programas para edición de imágenes como Photoshop, Illustrator, o Inkscape. En este episodio nos concentraremos en dos geoms

Empecemos con un ejemplo representando la distribución de la esperanza de vida de nuestro set de datos. Lo primero que vamos hacer es escribir la función ggplot. Esta función permite a R saber que estamos creando un nuevo gráfico, y cualquiera de los argumentos que le demos a la función ggplot son funciones globales para el gráfico: y se aplicarán a todas las capas del gráfico.

Pasaremos dos argumentos a ggplot. Primero, le diremos a ggplot qué datos queremos mostrar en nuestra figura, en este ejemplo utilizamos los datos de gapminder que leímos antes. Para el segundo argumento pasamos la función aes (), la cual le dice a ggplot cómo se mapean las propiedades estéticas con los datos de la figura. Aquí le diremos a ggplot que queremos graficar la columna “lifeExp” de la base de datos gapminder en el eje de las x. No necesitamos especificar un eje y para los histogramas.

library("ggplot2")
ggplot(data = gapminder, aes(x = lifeExp)) +   
  geom_histogram()

plot of chunk lifeExp-vs-gdpPercap-scatter

Por si misma, la llamada a ggplot no es suficiente para graficar una figura:

ggplot(data = gapminder, aes(x = lifeExp))

plot of chunk blank-plot

Necesitamos decirle a ggplot cómo queremos representar visualmente los datos, lo cual hacemos al agregar capas de geom. En nuestro ejemplo, utilizamos geom_histogram(), la cual le dice a ggplot que queremos representar visualmente la distribución de una variable (en nuestro caso “lifeExp”):

ggplot(data = gapminder, aes(x = lifeExp)) +   
  geom_histogram()
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

plot of chunk lifeExp-vs-gdpPercap-scatter2

Desafío 1

Modifica el ejemplo para que la figura muestre la distribución del pib per capita, en lugar de la expectativa de vida:

Solución al desafío 1

ggplot(data = gapminder, aes(x = gdpPercap)) +   
  geom_histogram()
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

plot of chunk ch1-sol

Los histogramas son una herramienta útil para visualizar la distribución de una variable categórica. ¿Qué pasa si queremos comparar el PIB per cápita de los países en nuestro conjunto de datos? Podemos usar un gráfico de barras (o columnas). Para simplificar nuestro gráfico, miremos datos del año más reciente y sólo de países en América.

gapminder_small <- filter(gapminder, year == 2007, continent == "Americas")

Esta vez, utilizaremos la función geom_col() como nuestra geometría. Trazaremos los países en el eje x (enumerados en orden alfabético por defecto) y pib per cápita en el eje y.

ggplot(data = gapminder_small, aes(x = country, y = gdpPercap)) + 
  geom_col()

plot of chunk hist-subset-gapminder

Con muchas barras representadas, es imposible leer todas las etiquetas del eje x. Una solución rápida es añadir la función coord_flip() al final del código de nuestro gráfico

ggplot(data = gapminder_small, aes(x = country, y = gdpPercap)) + 
  geom_col() +
  coord_flip()

plot of chunk hist-subset-gapminder-flipped

Hay formas más sofisticadas de modificar el nombre de los ejes. Aprenderemos algunos de esos métodos más adelante en este taller.

Desafío 2

En los ejemplos anteriores y en el desafío hemos utilizado la función aes para decirle a las funciones geom_histogram() y geom_col() qué columnas del conjunto de datos graficar. Otra propiedad estética que podemos modificar es el color. Crea un nuevo gráfico de barra (columna) mostrando el gdp per capita de todos los países de las Américas para los años 1952 y 2007, codificando el color por año.

Solución al desafío 2

Primero creamos un nuevo objeto con nuestros datos filtrados:

gapminder_small_2 <- gapminder %>%
                        filter(continent == "Americas",
                               year %in% c(1952, 2007))

Luego graficamos los datos usando la función geom_col(). Coloreamos las barras usando los parámetros fill dentro de la función aes(). Como hay múltiples barras para cada país, utilizamos el parámetro position para “esquivarlas” para que aparezcan lado a lado. El comportamiento por defecto para postion en geom_col() es “apilado”.

ggplot(gapminder_small_2, 
       aes(x = country, y = gdpPercap, 
       fill = as.factor(year))) +
   geom_col(position = "dodge") + 
   coord_flip()

plot of chunk gpd-per-cap

Los ejemplos dados aquí son solo el comienzo par crear gráficos complejos y atractivos con R. En una lección posterior entraremos en mayor profundidad, incluyendo:

Los ejemplos en los que hemos trabajado en este episodio deberían darte las bases para trabajar con tipos de gráficos más complejos y personalizaciones con las que vamos a trabajar en esa lección.

Puntos Clave

  • Usar ggplot2 para crear gráficos.

  • Pensar los gráficos en capas: estética, geometría, etc.