Introducción a gráficos en 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")
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)
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)