Gráfico de dispersión en R
Gráfico de dispersión simple
Hay muchas formas de crear un gráfico de dispersión en R. La función básica es plot(x , y)
, donde x
y y
son vectores numéricos que denotan los puntos (x,y) a representar.
# Simple Scatterplot
attach(mtcars)
plot(wt, mpg, main="Scatterplot Example",
xlab="Car Weight ", ylab="Miles Per Gallon ", pch=19)
(Para practicar la creación de un gráfico de dispersión sencillo, prueba este ejemplo interactivo de DataCamp).
La función scatterplot( )
del paquete auto ofrece muchas funciones mejoradas, como líneas de ajuste, gráficos de caja marginales, condicionamiento a un factor e identificación interactiva de puntos. Cada una de estas funciones es opcional.
# Enhanced Scatterplot of MPG vs. Weight
#by Number of Car Cylinders
library(car)
scatterplot(mpg ~ wt | cyl, data=mtcars,
xlab="Weight of Car", ylab="Miles Per Gallon",
main="Enhanced Scatter Plot",
labels=row.names(mtcars))
Matrices de dispersión
Hay al menos 4 funciones útiles para crear matrices de dispersión. ¡A los analistas les deben encantar las matrices de dispersión!
# Basic Scatterplot Matrix
pairs(~mpg+disp+drat+wt,data=mtcars,
main="Simple Scatterplot Matrix")
El paquete reticular proporciona opciones para condicionar la matriz de dispersión a un factor.
# Scatterplot Matrices from the lattice Package
library(lattice)
splom(mtcars[c(1,3,5,6)], groups=cyl, data=mtcars,
panel=panel.superpose,
key=list(title="Three Cylinder Options",
columns=3,
points=list(pch=super.sym$pch[1:3],
col=super.sym$col[1:3]),
text=list(c("4 Cylinder","6 Cylinder","8 Cylinder"))))
El paquete auto puede condicionar la matriz de dispersión a un factor, y opcionalmente incluir líneas de lowess y de mejor ajuste lineal, y boxplot, densidades o histogramas en la diagonal principal, así como gráficos de alfombra en los márgenes de las celdas.
# Scatterplot Matrices from the car Package
library(car)
scatterplot.matrix(~mpg+disp+drat+wt|cyl, data=mtcars,
main="Three Cylinder Options")
El paquete gclus proporciona opciones para reordenar las variables de modo que las que tienen correlaciones más altas estén más cerca de la diagonal principal. También puede codificar las celdas por colores para reflejar el tamaño de las correlaciones.
# Scatterplot Matrices from the glus Package
library(gclus)
dta <- mtcars[c(1,3,5,6)] # get data
dta.r <- abs(cor(dta)) # get correlations
dta.col <- dmat.color(dta.r) # get colors
# reorder variables so those with highest correlation
# are closest to the diagonal
dta.o <- order.single(dta.r)
cpairs(dta, dta.o, panel.colors=dta.col, gap=.5,
main="Variables Ordered and Colored by Correlation"
)
Gráficos de dispersión de alta densidad
Cuando hay muchos puntos de datos y un solapamiento significativo, los gráficos de dispersión resultan menos útiles. Hay varios enfoques que se pueden utilizar cuando esto ocurre. La función hexbin(x, y)
del paquete hexbin proporciona un binning bivariante en celdas hexagonales (tiene mejor aspecto del que parece).
# High Density Scatterplot with Binning
library(hexbin)
x <- rnorm(1000)
y <- rnorm(1000)
bin<-hexbin(x, y, xbins=50)
plot(bin, main="Hexagonal Binning")
Otra opción para un gráfico de dispersión con un solapamiento significativo de puntos es el gráfico de girasol. Consulta help(sunflowerplot) para más detalles.
Por último, puedes guardar el gráfico de dispersión en formato PDF y utilizar transparencia de color para que se vean los puntos que se solapan (esta idea procede de B.S. Everrit en HSAUR).
# High Density Scatterplot with Color Transparency
pdf("c:/scatterplot.pdf")
x <- rnorm(1000)
y <- rnorm(1000)
plot(x,y, main="PDF Scatterplot Example", col=rgb(0,100,0,50,maxColorValue=255), pch=16)
dev.off()
Nota: Puedes utilizar la función col2rgb( )
para obtener los valores rbg de los colores R. Por ejemplo, col2rgb("darkgreen")
da r=0, g=100, b=0. A continuación, añade el nivel de transparencia alfa como 4º número del vector de color. Un valor de cero significa totalmente transparente. Consulta help(rgb) para obtener más información.
Gráficos de dispersión 3D
Puedes crear un gráfico de dispersión 3D con el paquete scatterplot3d. Utiliza la función scatterplot3d(x , y , z)
.
# 3D Scatterplot
library(scatterplot3d)
attach(mtcars)
scatterplot3d(wt,disp,mpg, main="3D Scatterplot")
# 3D Scatterplot with Coloring and Vertical Drop Lines
library(scatterplot3d)
attach(mtcars)
scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
type="h", main="3D Scatterplot")
# 3D Scatterplot with Coloring and Vertical Lines
# and Regression Plane
library(scatterplot3d)
attach(mtcars)
s3d <-scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp)
s3d$plane3d(fit)
Gráficos de dispersión 3D giratorios
También puedes crear un gráfico de dispersión 3D interactivo utilizando la función plot3D(x , y , z)
del paquete rgl. Crea un gráfico de dispersión 3D giratorio que se puede rotar con el ratón. Los tres primeros argumentos son los vectores numéricos x
, y
y z
que representan puntos. col=
y size=
controlan el color y el tamaño de los puntos, respectivamente.
# Spinning 3d Scatterplot
library(rgl)
plot3d(wt, disp, mpg, col="red", size=3)
Puedes realizar una función similar con la página scatter3d(x , y , z)
del paquete Rcmdr.
# Another Spinning 3d Scatterplot
library(Rcmdr)
attach(mtcars)
scatter3d(wt, disp, mpg)
Practicar
Prueba los ejercicios de creación de gráficos de dispersión en este curso sobre visualización de datos en R.
Este contenido ha sido extraído de statmethods.net.