1 Introducción a gráficos con R

El lenguaje de programación R es muy poderoso para la generación de gráficos. Existen varios paquetes gratuitos para instalar con los comandos usuales y que facilitan la creación de gráficos de distinta naturaleza y con sintaxis muy diferentes. Algunos de los más populares son:

  1. graphics. Es el paquete de gráficos por defecto en R. Normalmente se crea un gráfico base con la función plot y después se añaden otros componentes como texto, puntos, leyenda y guía de colores.
  2. scatterplot3d. Es un paquete que permite crear gráficos de dispersión en tres dimensiones y utiliza la misma sintaxis que graphics
  3. lattice. Su sintaxis está basada ampliamente en graphics y facilita la presentación de datos multivariados mucho mejor que graphics. También tiene funciones para crear gráficos en 3d.
  4. ggplot2. Es uno de los paquetes gráficos más modernos y potentes y con la sintaxis más diferente de todos, pero al mismo tiempo muy asequible. Está pensado en ciencia de datos por lo que es muy potente para gráficos de datos multivariados.
  5. plot3D. Es un paquete muy potente para generar todo tipo de gráficos en 3d, aunque su sintaxis es la tradicional del paquete graphics.

Aquí nos enfocaremos en usar graphics y ggplot2, por ser los más populares, el primero por la larga tradición con que ya cuenta y el segundo por moderno, potente y popular.

1.1 Tipos de gráficos

Existen muchos tipos de gráficos y herramientas visuales para ayudarnos a hacer un análisis exploratorio, representar nuestros resultados ó comunicar algonimportanto que nuestros datos representan. Los gráficos pueden representar ciertas características de una sola variable, de dos o relaciones entre dos conjuntos. Por ejemplo los gráficos de caja representan las medidas de tendencia central de una sola variable, que puede estar dividida en categorías o niveles de otra variable (figura 1.1).

Ejemplo de gráfico de cajas para una variable con media y mediana de cero (línea negra del centro). Los límites de la caja central representan los cuartiles 2 y 3 (25 y 75%), y las líneas de rango los intervalos de confianza al 95%.

Figure 1.1: Ejemplo de gráfico de cajas para una variable con media y mediana de cero (línea negra del centro). Los límites de la caja central representan los cuartiles 2 y 3 (25 y 75%), y las líneas de rango los intervalos de confianza al 95%.

Para representar la distribución estadística de una variable, también existen los histogramas y gráficos de densidad. A diferencia de los gráficos de cajas, estos últimos muestran la candidad de observaciones que hay para cada valor de una variable (figura 1.2).

Histograma y gráfico de densidad para la misma variable que en el gráfico de cajas.

Figure 1.2: Histograma y gráfico de densidad para la misma variable que en el gráfico de cajas.

Un tipo de gráficos bi-variado (permite la visualización de dos variables), son los gráficos de dispersión. Se consiguen marcando los puntos en el plano euclidiano donde coinciden los dos conjuntos que se están graficando y sirven para visualizar tendencias y sus formas, es decir si lo valores de un conjunto aumentan o disminuyen cuando el otro conjunto aumenta de valor (figura 1.3)

Gráfico de dispersión para la misma variable y otras dos con alta (izquierda) y baja correlación (derecha).

Figure 1.3: Gráfico de dispersión para la misma variable y otras dos con alta (izquierda) y baja correlación (derecha).

2 Tutorial

2.1 R graphics

La función base de este paquete es plot, aunque está prácticamente limitada a la generación de gráficos de dispersión y de líneas. En análisis de datos, otras funciones prácticas son boxplot para gráficos de caja e hist para histogramas. Para usar la función plot necesitamos dos argumentos como mínimo, las coordenadas \(x\) y las \(y\).

x <- rnorm(100)
y <- x + rnorm(100, mean = 1, sd = 0.25)

plot(x, y)
Gráfico de dispersión generado con la función `plot`.

Figure 2.1: Gráfico de dispersión generado con la función plot.

En la Figura 2.1 se muestra la simulación de dos variables \(x\) con una distribución normal con \(\mu = 0\) y \(\sigma = 1\), y \(y\) que está correlacionada con \(x\) pero a la que se añade variación con una distribución normal con \(\mu = 0\) y \(\sigma = 0.25\).

Por defecto la función plot graficará con puntos, pero esto se puede modificar especificando el tipo de gráfico que queremos, por ejemplo:

x1 <- 1:10
y1 <- 1:10

plot(x1, y1, type = "l")
Uso de `plot` para generar una gráfica con líneas. El argumento `type` puede tomar otros valores como `s`, por *steps*, en este caso `l` significa *lines*.

Figure 2.2: Uso de plot para generar una gráfica con líneas. El argumento type puede tomar otros valores como s, por steps, en este caso l significa lines.

Si quisiéramos explorar la distribución estadística de los valores de ambas variables, podemos utilizar boxplot e hist:

boxplot(x)
Uso de `boxplot` e `hist` para la variable $x$.

Figure 2.3: Uso de boxplot e hist para la variable \(x\).

hist(x)
Uso de `boxplot` e `hist` para la variable $x$.

Figure 2.4: Uso de boxplot e hist para la variable \(x\).

La mayoría de las veces que hacemos análisis exploratorio tenemos las variables almacenadas en una base de datos. Además de acceder a los datos dentro de una base, normalmente estamos interesados en analizar la relación entre dos variables. Por lo tanto veamos cómo podemos acceder a los datos e incluir más de una variable de un data.frame con la función boxplot (incluidos los detalles de simulación):

x2 <- rnorm(100, mean = 1, sd = 2)
x3 <- rnorm(100, mean = 1.3, sd = 1.5)
tratamiento <- rep(c("a", "b"), each = 100)

base <- data.frame(Variable = c(x2, x3),
                   Tratamiento = tratamiento)

boxplot(Variable ~ Tratamiento, data = base)
Uso de `boxplot` con fórmula para representar la distribución de una variable numérica en relación a otra variable categórica con la sintaxis de fórmula.

Figure 2.5: Uso de boxplot con fórmula para representar la distribución de una variable numérica en relación a otra variable categórica con la sintaxis de fórmula.

2.2 ggplot2

El paquete ggplot2 es uno de los más modernos y potentes de R para representar datos visualmente. Su sintaxis, sin embargo, es muy distinta de la que se usa en graphics. Todas las gráficas de ggplot2 se generan llamando primero la función ggplot, y después se le van añadiendo los elementos gráficos como líneas, puntos, cajas o áreas. Para añadir cada uno de estos elementos gráficos existen funciones geométricas como geom_point o geom_line para puntos y líneas respectivamente. El gráfico de la figura ?? puede ser replicado en ggplot de la siguiente manera:

library(ggplot2)

base.1 <- data.frame(x = x, y = y)

ggplot(base.1) + geom_point(aes(x = x, y = y))
Gráfico de dispersión con `ggplot2`.

Figure 2.6: Gráfico de dispersión con ggplot2.

Para un gráfico de cajas:

ggplot(base) + geom_boxplot(aes(x = Tratamiento, y = Variable))

Una de las grandísimas ventajas de ggplot2 es que se pueden utilizar colores para resaltar diferencias entre grupos de datos mucho más fácil que en graphics, simplemente añadiendo la variable que queremos utilizar para identificar los colores:

ggplot(base) + geom_boxplot(aes(x = Tratamiento, y = Variable, fill = Tratamiento))

Código fuente de este tutorial

Regresar al índice del curso