Saltar al contenido principal
Documentos
Gestión de datos en RGráficos en RR DocumentaciónInterfaz REstadística en RIntroducción de datos en R

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).

Gráfico de dispersión 689x689/público

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))
Scatterplot3 689x689/public

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")

spmatrix1 689x689/público

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"))))

spmatrix2 689x689/público

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")

spmatrix3 689x689/público

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"
)

Matriz dispersa 4/pública

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")

Hexbin (1)/público

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()

Alpha Scatter/public

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")

S3D1 689x689/público

# 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")

S3D2 689x689/público

# 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)

S3D3 689x689/público

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)

Parcela3D 339x409/pública

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)

Gráfico de dispersión 3D/público

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.

Aprende lo esencial de R

Domina los fundamentos del análisis de datos en R, incluyendo vectores, listas y marcos de datos, y practica R con conjuntos de datos reales.
Empieza a aprender R gratis