Introducción a gráficos en R


Sistemas gráficos de R

Introducción a gráficas de R

R actualmente constituye una de las principales herramientas empleada en la generación de gráficos estadísticos de alta calidad y complejidad. Presenta características muy superiores a los clásicos softwares estadísticos generalmente utilizados. Actualmente R dispone de tres tipos de sistemas (R paquetes) gráficos, entre ellos tenemos: Base, Lattice, Ggplot2.


Sistema gráficos base

Se basa en la utilización de los paquetes:

  • graphics.Funciones gráficas hist() plot(), etc.
  • grDevices.Funciones de dispositivos gráficos pdf() png() ,etc

Carácteristicas:

  • Modelo paleta de artista
  • Crear lienzo del gráfico
  • Añadir elementos utilizando las funciones lines(), points(), etc
  • Muy intuitivo
  • No posee un lenguaje gráfico estándar
  • Llamando a varias funciones (códigos extensos)
  • Una vez empezado el gráfico no es posible volver al inicio
  • Permite fijar inicialmente layouts (margenes,espacios,etc) a través de la función par ().

Ejemplo:

with(airquality, plot(Wind, Ozone, main = "Ozone vs Wind", type = "n"))
with(subset(airquality, Month <= 6), points(Wind, Ozone, col = "red", pch=16))
with(subset(airquality, Month > 6), points(Wind, Ozone, col = "blue", pch=16))
model <- lm(Ozone ~ Wind, airquality)
abline(model, lwd = 1, col= "green")
legend("topright", pch = 16, col = c("blue", "red"), legend = c("Semestre 2", "Semestre 1")) 

Facetas

par(mfrow=c(1,2))
with(subset(airquality, Month <= 6),
plot(Wind, Ozone, col = "red", pch=16, main="Semestre 1")) 
model1 <- lm(Ozone ~ Wind, subset(airquality, Month <= 6)) 
abline(model1, lwd = 1, col= "green")
with(subset(airquality, Month > 6),
plot(Wind, Ozone, col = "blue", pch=16, main="Semestre 2"))
model2 <- lm(Ozone ~ Wind, subset(airquality, Month > 6))
abline(model2, lwd = 1, col= "green")

Back to Top

Sistema gráfico Lattice

Se basa en la utilización de los paquetes:

  • Lattice. Funciones gráficas xyplot() bwplot(), etc. Grid. Para gráficos condicionados (Facetas).

Características:

  • No es muy intuitivo
  • Llamado de una sola función.
  • Layouts (margenes,espacios,etc) se fijan automáticamente

Ejemplo:

library(lattice)
airquality <- transform(airquality, Month = as.factor (Month))
graf <- xyplot(Ozone~Wind | Month, data = airquality, layout=c(5,1), panel= function(x, y){
  panel.xyplot(x, y, pch=16)
  panel.lmline(x, y, col = "green")})
print(graf)

Back to Top

Sistema gráfico ggplot2

Ggplot2 es el sistema de gràficos resultante de la combinaciòn de las carateristicas de los sistemas base y lattice. Fue desarrollado por Hardley Wickham como una implementación de la gramàtica de gràficos (Grammar of Graphics) propuesta por Leland Wilkinson.

Base + Lattice = ggplot2

ggplot2 se encuentra disponible en el repositorio CRAN, se puede instalar y cargar en el àrea de trabajo directamente ejecutando las lineas de còdigo siguientes:

#install.packages("ggplot2", dependencies=TRUE)
library(ggplot2)
g <- ggplot(mpg, aes(x=displ, y=hwy, color=drv))
g + geom_point() + geom_smooth(method="lm")

Histogramas

library(ggplot2)
g <- ggplot(mpg, aes(x=displ, fill=drv))
g + geom_histogram(binwidth=0.5, alpha = 0.8, colour="gray60")

Curvas de densidad

library(ggplot2)
g <- ggplot(mpg, aes(x=displ, fill=drv))
g + geom_density(alpha=0.8, colour="gray60") + xlim(c(0, 8))

Diagrama de Caja bigotes

library(ggplot2)
g <- ggplot(mpg, aes(x="X", y=hwy))
g + geom_boxplot(width=0.3, fill="lightseagreen", color="gray60",
outlier.colour = "red") + labs(x="")                         

Diagrama de Barras

library(ggplot2)
g <- ggplot(mpg, aes(x=fl, fill=drv))
g + geom_bar()

Diagrama de pie

library(ggplot2)
g <- ggplot(mpg, aes(x=TRUE, fill=fl)) + geom_bar(width=1)
g + coord_polar(theta = "y")

Gráficos múltiples de distribución

Los paquetes se instalan una sola vez y deben ser cargados en cada inicio de sesión.

library(ggplot2)
g <- ggplot(mpg, aes(x=drv, y=hwy, fill=drv))
g + geom_boxplot(width=0.4, colour="gray60", outlier.colour = "red")

Gráfico de linea básico

mes <- 1:300; ruido <- rnorm(300,0,1)
d <- data.frame(mes,ruido)
g <- ggplot(d, aes(x=mes, y=ruido))
g + geom_line(colour="cadetblue", size=0.3)

Gráfico de lineas múltiples

library(ggplot2)
mes <- 1:300; ruido <- rnorm(300,0,1); grupo <- factor(rep(1:3,100))
d <- data.frame(mes,ruido,grupo)
g <- ggplot(d, aes(x=mes, y=ruido, colour=grupo))
g + geom_line(size=0.3)

Generación de gráfcos ggplot

g <- ggplot(mpg, aes(x=displ, y=hwy, color=as.factor(cyl)))
g + geom_point(alpha=0.8) + geom_smooth(method="lm",colour="red") +
facet_grid(.~drv,margins = TRUE)

library(ggplot2)
g <- ggplot(mpg, aes(x=displ, y=hwy, color=drv))
g + geom_point(alpha=0.8) + geom_smooth(method="lm",colour="red") +
facet_grid(.~cyl,margins = TRUE)

library(ggplot2)
g <- ggplot(mpg, aes(x=displ, y=hwy, color=drv))
g + geom_point(alpha=0.8) + geom_smooth(method="lm",colour="red") +
facet_grid(drv ~ cyl,margins = TRUE)

Back to Top