Ejercicio I Visualización y Distribución de Datos

Introducción

  • En este ejercicio vamos a realizar gráficos utilizando ggplot.

Recordemos lo siguiente:

Un gráfico es un mapeo de variables de datos a atributos estéticos de objetos geométricos.

Tiene tres componentes principales:

  1. Datos (data, en inglés): el conjunto de datos compuesto por variables que mapeamos.

  2. Geometría (geom, por geometry en inglés): el objeto geométrico en cuestión. Se refiere al tipo de objeto que compone el gráfico, por ejemplo: puntos, líneas y barras.

  3. Estética (aes, por aesthetic en inglés): atributos estéticos del objeto geométrico. Por ejemplo, posición x, y, color, forma y tamaño. Cada atributo estético se puede asignar a una variable en nuestro conjunto de datos.

Ejemplo de la gramática en un gráfico

Vamos a ver un ejemplo de estos componentes en un gráfico, para ello vamos a utilizar el paquete gapminder que ya instalamos y cargamos por ti en este ejercicio.

Para ver los datos de gapminder, escribe gapminder en el bloque de código que aparece abajo y luego haz click en el botón “Run Code”. También puedes usar la función head() para ver los primeros registros de los datos, o summary() para obtener un resumen de los datos, o str() para ver la estructura de los datos.

Como ver, los datos de gapminder contienen información sobre la esperanza de vida (lifeExp), el PIB per cápita (gdpPercap) y la población de varios países a lo largo del tiempo. pop es la población, continent es el continente al que pertenece el país y year es el año de la observación.

Veamos un gráfico a través de la gramática de los gráficos.

El siguiente gráfico está realizado con los datos de gapminder, intentemos reconocer que variables y secciones corresponden a la gramática de gráficos:

Mirando el código y el gráfico, podemos indentificar que:

  • Datos: el nombre del conjunto de datos (gapminder) se asigna al atributo data
  • Estética: el eje x representa la variable gdpPercap, el eje y representa la variable lifeExp, el color (o colour) representa la variable continent y el tamaño (size) representa la variable población.
  • Geometría: generamos un gráfico de puntos, como indica la función geom_point()

Cambiemos algunas propiedades

Supongamos que queremos cambiar los ejes del gráfico, ¿cómo cambiarías el código anterior para lograr ese cambio? Por ejemplo, ¿cómo cambiarías los ejes para que el eje x represente ela esperanza de vida y el eje y el PIB per capita?

Hint 1

Recuerda que los ejes están representados por las letras x (horizontal) e y (vertical)

ggplot(data = gapminder, 
       aes(x = lifeExp, y = gdpPercap, 
                     color = continent, 
                     size = gdpPercap)) +
    geom_point()

Bien hecho!

Además del gráfico de puntos, indicado en el código anterior por geom_point(), tenemos otros tipos de gráficos, por ejemplo gráficos de líneas, de barras, de áreas o histogramas.

¿Cómo te parece que pueden llamarse las geometrías para los gráficos de lineas y de barras?

Gráfico de lineas

Vamos a realizar otros gráficos utilizando los datos en gapminder. Para generar el gráfico de lineas, vamos a ver la evolución de la población de México en la serie de datos disponible. Los gráficos de líneas son útiles para mostrar la evolución de una variable a lo largo del tiempo.

Primero, filtra los datos de gapminder para obtener solo los datos de México y guárdalos en un nuevo dataset llamado Mex. Utiliza la función head() para ver los primeros registros de Mex. Para filtrar adecuadamente a México, NO utilices acentos en el nombre del país, pero si el nombre en mayúsculas (Mexico).

Hint 1

Recuerda que el nombre del país es Mexico y que la variable que contiene el nombre del país es country.

También recuerda la función filter()

Note
Mex <- gapminder %>%
  filter(country == 'Mexico')

head(Mex)

Ahora, a partir de los datos de México, cre un gráfico de recta (geom_line()) donde se muestre en el eje x los años y en el y la población.

Hint 1
  • El dataset se llama Mex
  • La variable que contiene los años se llama year
  • La variable que contiene la población se llama pop
1ggplot(data = Mex,
2       mapping = aes(x = year, y = pop)) +
    geom_line()
1
Pasa el conjunto de datos Mex a la capa de datos (data).
2
Mapea las variables year a al eje x y pop al eje y.

Hagamos un gráfico de barras

Hay dos formas de hacer un gráfico de barras en ggplot2, una forma es utilizando geom_bar() y otra es utilizando geom_col().

  • geom_bar() : utilizamos esta geometría cuando no tenemos una variable que contenga el cálculo de la cantidad o frecuencia de la variable categórica que queremos gráficar. Solo asignameros la variable categorica al eje x y ggplot realizará cálculo del valor del eje y por nosotros.

  • geom_col() : utilizamos esta geometría cuando tenemos en nuestro set de datos una variable con el cálculo de la cantidad o frecuencia de la variable categórica que queremos graficar. Vamos a usar la estética del eje y y le asignaremos la variable que tiene esa cantidad.

Vamos a transformar el gráfico anterior a barras. ¿Cómo realizarias este cambio?, ¿cuál de las dos opciones de geometrías utilizarías?

Hint 1

La variable pop ya contiene la cantidad de la población calculada.

Recuerda que geom_bar solo asigna una variable categórica, mientras que geom_col podemos asignar otra variable al eje y.


1ggplot(data = Mex,
2       mapping = aes(x = year, y = pop)) +.
3    geom_col()
    
1
Pasa el conjunto de datos Mex a la capa de datos (data).
2
Mapea las variables year a al eje x y pop al eje y.
3
Utilizamos geom_col() porque ya contamos con una variable que tiene calculada la cantidad que queremos representar

Hagamos un gráfico de área

Vamos a transformar el gráfico anterior a áreas.

Modifica el siguiente código para generar un gráfico de áreas que nos muestre los años en el eje x y la población en el eje y.

Hint 1

Recuerda que el nombre de la geometría es la palabra en inglés, en linea es geom_line(), en barras es geom_bar(), para área es geom_ …

ggplot(data = Mex, 
       mapping = aes(x = year, y = pop)) +
1    geom_area()
1
Utilizamos geom_area() para generar el gráfico de áreas.

Visualizar Distribución Normal

  • Recuerda que la distribución normal tiene 2 parámetros, la media \(\mu\) y la desviación estándar \(\sigma\).

Para una distribución normal estandarizada, la media es 0, \(\mu =\) y la desviación estándar es 1, \(\sigma =\) , como se observa en el siguiente gráfico de densidad:

Escribe el código de R necesario para simular los valores de la distribución normal estandarizada (arriba) usando la función dnorm(). Cuando estés listo, haz click en el botón “Run Code” para ver el gráfico. Recuerda que dnorm() toma como argumentos el vector de valores (en este caso, x) y los parámetros que definen a la distribución normal.

Solution:

x <- seq(-5, 5, length = 100) # <1> y <- dnorm(x, mean = ${mean}, sd = ${sd}) # <2> plot(x, y, type = "l", lwd = 2, ylim = c(0,1)) # <3>
1x <- seq(-5, 5, length = 100)
2y <- dnorm(x, mean = ${mean}, sd = ${sd})
3plot(x, y, type = "l", lwd = 2, ylim = c(0,1))
1
Generar valores para el eje x.
2
Genera valores para y con distribución normal usando la función dnorm(), con media y desviación estándar .
3
los valores se grafican como una línea (type = "l").

Fuentes

Esperamos que esta pequeña introducción a los gráficos en R te sea de utilidad. A continuación te dejamos una serie de materiales que pueden resultar muy útiles para continuar aprendiendo y en los cuales basamos este tutorial.

Licencia

Este curso se comparte bajo la licencia Creative Commons Attribution-ShareAlike 4.0 International License y fue realizado por Yanina Bellini Saibene y modificado por Santiago Garcia.