Gráficas de dispersión en ggplot2

Aproximación a los gráficos de dispersión

TCV

2016-09-27

Introducción

El objetivo de esta guía es entender como realizar gráficas de dispersión en el paquete ggplot2 de R.

Pero primero, qué es un gráfica de dispersión?

Lo que nos dice Wikipedia al respecto

Un diagrama de dispersión o gráfica de dispersión es un tipo de diagrama matemático que utiliza las coordenadas cartesianas para mostrar los valores de dos variables para un conjunto de datos. Los datos se muestran como un conjunto de puntos, cada uno con el valor de una variable que determina la posición en el eje horizontal (x) y el valor de la otra variable determinado por la posición en el eje vertical (y). Utts, Jessica M. Seeing Through Statistics 3rd ed., Thomson Brooks/Cole, 2005, pp. 166-167. ISBN 0-534-39402-7

Tables

Para la demostración de que tipos de gráficas de dispersión y que modificaciones a estos es posible realizar en ggplot2, emplearemos la siguente table incluida en el R.

knitr::kable(
  l<-mtcars[1:6, 1:6], caption = 'columnas 1 a 6 de la tabla mtcars'
)

columnas 1 a 6 de la tabla mtcars

mpg cyl disp hp drat wt
Mazda RX4 21.0 6 160 110 3.90 2.620
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875
Datsun 710 22.8 4 108 93 3.85 2.320
Hornet 4 Drive 21.4 6 258 110 3.08 3.215
Hornet Sportabout 18.7 8 360 175 3.15 3.440
Valiant 18.1 6 225 105 2.76 3.460

Figures

Main Column Figures

La forma mas básica de representar una gráfica de dispersión en ggplot2 es al emplear la línea de comando “ggplot(mtcars, aes(wt, mpg)) +geom_point()” donde se le esta solicitando a ggplot2 que desde la tabla “mtcars” seleccione las columnas “wt” y “mpg” y luego le solicito que realice una gráfica de dispersión.

geom_point(), el comando que permite realizar gr?ficos de disperci?n puede ser reemplazado por diversos comandos, generando todos ellos diferentes tipos de gr?ficas, por ejemplo, podríamos usar geom_box, _line, _line, entre muchos otros Esto daría como resultado la gráfica que se observa a continuación.

p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
p

A figure in the main column.

A figure in the main column.

Adicionalmente usted bajo ciertas circunstancias podría desear poder diferencial cada uno de los puntos en la gráfico mediante alguna variable en particular. Para este ejercicio emplearemos la columna cyl, como un factor para colorear los puntos. cyl es una columna que hace relaci?n al número de cilindros que posee cada uno de los autos de la tabla

Para esto emplearemos la siguiente lénea de comando "geom_point(aes(colour = factor(cyl)))"
p + geom_point(aes(colour = factor(cyl)))

A figure in the main column.

A figure in the main column.

De la misma forma, en ciertas circunstancias sera útil diferencial los elementos de una gráfica de dispersión a traves de diferentes formas. Para esto emplearemos el comando shape, de la misma forma que anteriormente empleamos “colour”. Resultando en la siguiente figura.

p + geom_point(aes(shape = factor(cyl)))

Aún cuando resultan muy practicas a la hora de diferenciar nuestros datos, tanto “colour” como “shape” sólo pueden ser asignadas a variables categóricas. Para diferenciar nuestros datos empleando variables de comportamieto continuo, podemos emplear el comando “size”. De manera de ejemplificar esto emplearemos “size” en la columana qsec, de la misma manera que “colour” y “shape”.

p + geom_point(aes(size = factor(qsec)))
## Warning: Using size for a discrete variable is not advised.

En otro aspecto, el paquete ggplot2 permite realizar ciertos ajustes estadísticos, con el objetivo de hacer evidente la tendencia de los datos observados. para esto emplearemos el comando geom_smooth().

p + geom_smooth()

Al igual que geom_point(), geom_smooth() permite una serie de personalizaciones, por ejemplo, podríamos pedirle que muestre tan solo la regesion linear que muestran los datos como se observa en la figura.

p + geom_smooth(method = "lm", se = FALSE)

Esperamos que con esta pequeña guía logre tener un mayor manejo de las gráficas de dispersion en ggplot2, adicionalmente puede consultar todas las posibilidades de este paquete en la pagina ggplot [http://docs.ggplot2.org/current/]