ggplot2

Kenneth Roy Cabrera Torres
miércoles, 04 de abril de 2018

¿Qué es ggplot2? I

  • Es una construcción de la “Gramática de las gráficas” (Grammar Graphics) propuesta por Leland Wilkinson.
  • Escrito por Hadley Wickham (como estudiante de Iowa State).
  • Está disponible en CRAN y se installa como un paquete del CRAN.

¿Qué es ggplot2? II

  • La gramática de las gráficas representa una abtracción de gráficas e ideas.
  • Similar a pensar en “verbos”, “sustantivos” y “adjetivos” para las gráficas.
  • La teoría propone una construcción de gráficas mediante una sucesión de elementos similar a un lenguaje.
  • La idea es acortar la distancia entre lo que se piensa y lo que se grafica.

¿Qué es ggplot2? III

“En resumen, la gramática nos dice que una gráfica estadística es un mapa de los datos a unos atributos estéticos (color, forma, tamaño) de unos objetos geométricos (puntos, lineas, barras). La gráfica tendrá transformaciones estadísticas que se trazan en sistemas de coordenadas específicas”

Del libro “ggplot2”

La función qplot()

  • Trabaja similar a la función plot en el sistema básico.
  • Se le indica una base de datos, unos elementos estéticos y una geometría.
  • Se recomienda trabajar con la composición para tener más dominio de la gramática.

Paquete ggplot2

require(ggplot2)

Base de datos

help(mpg)
str(mpg)
head(mpg)

Primera gráfica

g1 <- ggplot(mpg, aes(displ, hwy))
g1 + geom_point()

plot of chunk unnamed-chunk-3

Segunda gráfica

g1 <- ggplot(mpg, aes(displ, hwy, col = drv))
g1 + geom_point()

plot of chunk unnamed-chunk-4

Adición de una "geom_"

g1 <- ggplot(mpg, aes(displ, hwy))
g1 + geom_point() + geom_smooth()

plot of chunk unnamed-chunk-5

Histograma

g1 <- ggplot(mpg, aes(hwy))
g1 + geom_histogram()

plot of chunk unnamed-chunk-6

Histogramas

g1 <- ggplot(mpg, aes(hwy, fill = drv))
g1 + geom_histogram()

plot of chunk unnamed-chunk-7

Facetas (páneles) I

g1 <- ggplot(mpg, aes(displ, hwy))
g1 + geom_point() + facet_grid( . ~ drv)

plot of chunk unnamed-chunk-8

Facetas (páneles) II

g1 <- ggplot(mpg, aes(displ, hwy))
g1 + geom_point() + facet_grid( drv ~ .)

plot of chunk unnamed-chunk-9

Facetas (páneles) III

g1 <- ggplot(mpg, aes(hwy))
g1 + geom_histogram() + facet_grid( drv ~ .)

plot of chunk unnamed-chunk-10

Calidad del aire

require(dataset)
require(airquality)
help(airquality)
str(airquality)
head(airquality)

Calidad del aire I

require(ggplot2)
g1 <- ggplot(airquality, aes(Ozone))
g1 + geom_histogram()

plot of chunk unnamed-chunk-12

Calidad del aire II

require(ggplot2)
g1 <- ggplot(airquality, aes(Ozone, fill = factor(Month)))
g1 + geom_histogram()

plot of chunk unnamed-chunk-13

Distribución

require(ggplot2)
g1 <- ggplot(airquality, aes(Ozone))
g1 + geom_density()

plot of chunk unnamed-chunk-14

Distribuciones

require(ggplot2)
g1 <- ggplot(airquality, aes(Ozone, col = factor(Month)))
g1 + geom_density()

plot of chunk unnamed-chunk-15

Diagrama de dispersión I

require(ggplot2)
g1 <- ggplot(airquality, aes(Day, Ozone))
g1 + geom_point()

plot of chunk unnamed-chunk-16

Diagrama de dispersión II

require(ggplot2)
g1 <- ggplot(airquality, aes(Day, Ozone, shape=factor(Month)))
g1 + geom_point()

plot of chunk unnamed-chunk-17

Series de tiempo I

require(ggplot2)
g1 <- ggplot(airquality, aes(Day, Ozone, col=factor(Month)))
g1 + geom_line()

plot of chunk unnamed-chunk-18

Series de tiempo II

require(ggplot2)
g1 <- ggplot(subset(airquality, !is.na(Ozone)),
             aes(Day, Ozone, col=factor(Month)))
g1 + geom_line()

plot of chunk unnamed-chunk-19

Series de tiempo III

require(ggplot2)
g1 <- ggplot(subset(airquality, !is.na(Ozone)),
             aes(Day, Ozone))
g1 + geom_line() + facet_grid(. ~ Month)

plot of chunk unnamed-chunk-20

Series de tiempo IV

require(ggplot2)
g1 <- ggplot(subset(airquality, !is.na(Ozone)),
             aes(Day, Ozone))
g1 + geom_smooth() + facet_grid(. ~ Month) + geom_point()

plot of chunk unnamed-chunk-21

Anotaciones I

require(ggplot2)
g1 <- ggplot(subset(airquality, !is.na(Ozone)),
             aes(Day, Ozone))
g1 + geom_smooth() +
     facet_grid(. ~ Month) +
     geom_point() +
     ggtitle("Comportamiento del ozono por mes") +
     xlab("Día") +
     ylab("Ozono (ppmm)")

plot of chunk unnamed-chunk-22

Anotaciones II

require(ggplot2)
fecha1 <- as.Date(paste(with(airquality,seq(min(Month),max(Month))),"01"), format = "%m%d")
nombreMeses <- format(fecha1,"%B")
airquality <- transform(airquality, Mes = factor(Month, labels = nombreMeses))
g1 <- ggplot(subset(airquality, !is.na(Ozone)), aes(Day, Ozone))
g1 + geom_smooth() +
     facet_grid(. ~ Mes) +
     geom_point() +
     ggtitle(expression(paste("Comportamiento del ozono ",O[3]," por mes"))) +
     xlab("Día") + ylab(expression(paste(O[3], "(ppmm)")))

plot of chunk unnamed-chunk-23

Anotaciones III

require(ggplot2)
fecha1 <- as.Date(paste(with(airquality,seq(min(Month),max(Month))),"01"), format = "%m%d")
require(Hmisc)
nombreMeses <- capitalize(format(fecha1,"%B"))
airquality <- transform(airquality, Mes = factor(Month, labels = nombreMeses))
g1 <- ggplot(subset(airquality, !is.na(Ozone)), aes(Day, Ozone))
g1 + geom_smooth() +
     facet_grid(. ~ Mes) +
     geom_point() +
     ggtitle(expression(paste("Comportamiento del ozono ",O[3]," por mes"))) +
     xlab("Día") + ylab(expression(paste(O[3], " (ppmm)")))

plot of chunk unnamed-chunk-24

Estadísticas I

g1 <- ggplot(mtcars, aes(x = cyl, y = mpg, colour = factor(vs)))
g1 +  geom_point() +
  stat_summary(fun.y = mean, geom="line", size = 2)

plot of chunk unnamed-chunk-25

Estadísticas II

g1 <- ggplot(mpg, aes(hwy))
g1 + stat_bin(aes(ymax = ..count..), geom = "area")

plot of chunk unnamed-chunk-26

Estadísticas III

g1 <- ggplot(mpg, aes(hwy))
g1 + stat_bin(aes(size = ..density..), binwidth = 0.1,
              geom = "point", position = "identity")

plot of chunk unnamed-chunk-27

Referencias