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:
Datos (data, en inglés): el conjunto de datos compuesto por variables que mapeamos.
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.
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 variablegdpPercap
, el ejey
representa la variablelifeExp
, elcolor
(ocolour
) representa la variablecontinent
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?
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
).
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()
<- gapminder %>%
Mex 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.
- 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
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?
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.
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.
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)) +
1geom_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>
- 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.