20 de febrero de 2019

¿Qué es ggplot?

Forma parte del motor gráfico desarrollado por Paul Murrell en 2001 llamado grid. De entre las funciones de ggplot se encuentran manipulaciones gráficas como: generación de lienzos, trazo de líneas, dibujo de puntos, etc.

Para el siguiente trabajo se requiere instalar las siguientes librerias:

library(openxlsx)
library(ggplot2)
library(tidyverse)

y se trabajará con distintas bases de datos, las cuales se seleccionarán de acuerdo a los diversos propósitos y vienen incluidas ya en R.

Comenzaremos con la base de datos iris

## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

¿Cómo generar un gráfico con ggplot?

Para ello se necesita construir una sintáxis, la cual obligatoriamente debe tener los siguientes elementos:

Datos: deben ser del tipo data frame. Se comienza creando un objeto el cual contiene los datos que vamos a utilizar.

p<-ggplot(iris)
p

Estéticas (aes): son, por ejemplo, la distancia horizontal o vertical, el color, la forma , el tamaño, etc.

Entre algunas estéticas tenemos:

  • x e y: distancias horizontal y vertical.

  • colour: para el color.

  • size: para el tamaño.

  • shape: indica la forma de los puntos (cuadrados, triángulos, etc.) o el trazo (continuo, punteado) de las líneas.

  • alpha: para la transparencia, su utilidad se refleja cuando queremos dar peso y/o importancia a ciertos datos.

  • fill: para el color de relleno de las formas sólidas (barras, etc).

p<-p + aes(x = Petal.Length, y = Petal.Width, colour = Species)
p

Objetos geométricos: son los verbos del lenguaje de los gráficos e indican qué hacer con los datos y las estéticas elegidas y cómo representarlos en un lienzo.

p + geom_point()

p + geom_smooth()

Existen un sin número de objetos geométricos sin embargo los más usuales son geom_point, geom_line, geom_histogram, geom_bar y geom_boxplot.

Para consultar otros objetos geométricos se puede dirigir a http://docs.ggplot2.org/current/

¿Cómo guardar los gráficos creados?

La función ggsave guarda en el directorio de trabajo el último gráfico generado con ggplot2, en el formato indicado y con el nombre del fichero que se quiere generar.

ggsave("mi_grafico.png")

Además con la función last_plot se puede obtener la última gráfica creada.

Otras funciones y estéticas

  • Facetas

La función facet_grid crea tres gráficos dispuestos horizontalmente que comparan la relación entre la anchura y la longitud del pétalo de las tres especies de iris. Estos gráficos permiten hacer comparaciones.

ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) + 
  geom_point() + geom_smooth() + 
  facet_grid(~ Species)

ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) + 
  geom_point() + geom_smooth() + 
  facet_grid(Species ~.)

  • Estéticas

Las estéticas se pueden etiquetar con la función labs. Además, se le puede añadir un título al gráfico usando la función ggtitle.

 p + ggtitle("Longuitud y ancho del pétalo") + 
         labs(x = "Longuitud del pétalo", 
              y = "Ancho del pétalo", 
              colour = "Species")

Ejemplos

a<-ggplot(economics,aes(date,unemploy))
b<-ggplot(seals,aes(x=long,y=lat))

Segmentos

a+geom_abline(aes(intercept=0,slope=1))

b+geom_hline(aes(yintercept=lat))

b+geom_vline(aes(xintercept=long))

Dibuja una línea recta entre los puntos (x, y)

b+geom_segment(aes(yend=lat+1,xend=long+1))

Una variable

str(mpg)
## Classes 'tbl_df', 'tbl' and 'data.frame':    234 obs. of  11 variables:
##  $ manufacturer: chr  "audi" "audi" "audi" "audi" ...
##  $ model       : chr  "a4" "a4" "a4" "a4" ...
##  $ displ       : num  1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
##  $ year        : int  1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
##  $ cyl         : int  4 4 4 4 6 6 6 4 4 4 ...
##  $ trans       : chr  "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
##  $ drv         : chr  "f" "f" "f" "f" ...
##  $ cty         : int  18 21 20 21 16 18 18 18 16 20 ...
##  $ hwy         : int  29 29 31 30 26 26 27 26 25 28 ...
##  $ fl          : chr  "p" "p" "p" "p" ...
##  $ class       : chr  "compact" "compact" "compact" "compact" ...

c<-ggplot(mpg,aes(hwy))
c1<-ggplot(mpg)

Continua

c+geom_density()

c+geom_histogram()

c1+geom_qq(aes(sample=hwy))

Discreta

d<-ggplot(mpg,aes(fl))
d+geom_bar()

X continua, Y discreta

e<-ggplot(mpg,aes(cty,hwy))

Crea diagramas de dispersión

e+geom_point()

Ajusta una regresión de cuantiles a los datos y dibuja los cuantiles ajustados con líneas. Es un análogo continuo de geom_boxplot.

e+geom_quantile()

X discreta , Y continua

f<-ggplot(mpg,aes(class,hwy))

Similar a geom_bar

f+geom_col()

f+geom_boxplot()