Gráficos múltiples

Por lo general presentaremos sólo un gráfico por figura, pero en ocasiones nos puede interesar presentar varios gráficos agrupados en una misma figura (por ejemplo, dos histogramas de sendas variables). Para hacer esto, R dispone de varias posibilidades. Una de ellas es la función layout(). Esta función requiere como argumento una matriz en la que se informe del número de ventanas en las que hay que dividir el dispositivo gráfico, su numeración y el número de columnas y filas que vamos a utilizar. Por ejemplo, para dividir la figura en seis ventanas (cada una para un gráfico diferente) agrupadas en dos filas de tres columnas, deberemos teclear
layout(matrix(1:6,2,3))
los que dividirá la pantalla tal y como vemos en la Figura [*].
Figura: División de la pantalla gráfica con layout()
Image layout6
La matriz que introducimos como argumento incluye en primer lugar el número de ventanas que vamos a crear y su numeración (en este caso serán seis consecutivas, 1:6). En segundo lugar se indica el número de filas 2 y, finalmente el de columnas 3.
Puede apreciarse en la figura el orden en el que serán ocupadas las ventanas cuando desde R se mande realizar un gráfico. Por defecto se numeran desde la esquina superior izquierda y siguiendo las columnas.

Las posibilidades de subdivisión son inmensas; en realidad, van más allá de lo que necesitaremos en la práctica. Podemos. por ejemplo, hacer divisiones desiguales de la pantalla sólo con asignar a ventanas consecutivas la misma numeración. Por ejemplo,
layout(matrix(c(1,1,2,3,4,4),2,3))
genera la división de la Figura [*].

Figura: División desigual de la pantalla gráfica con layout()
Image layoutraro

Puede resultar una buena idea tener creadas unas cuantas matrices para las divisiones que utilicemos más habitualmente. Por ejemplo, crear las siguientes matrices
dos.hor<-matrix(1:2,1,2)
dos.ver<-matrix(1:2,2,1)
cuatro<-matrix(1:4,2,2)
normal<-matrix(1)
nos permitirá dividir las pantallas en dos ventanas horizontales, dos verticales, cuatro ventanas, y volver a la pantalla única original con sólo teclear
layout(dos.hor)
layout(dos.ver)
layout(cuatro)
layout(normal)
Para crear la Figura [*], podríamos introducir las siguientes órdenes
X11() layout(dos.ver)
hist(cars$speed,main="Velocidad",col=2,xlab="V(mph)",

ylab="Frecuencia")
hist(cars$dist,main="Distancia",col=4,xlab="d(pies)",

ylab="Frecuencia")

Figura: Dos histogramas con layout()
Image doshistogramas

Para crear layouts regulares (con todas las ventanas del mismo tamaño) también podemos utilizar un parámetro de la función par(); se trata de mfrow. Este nos permite establecer el número de ventanas en términos de filas y columnas. Así, para dividir el dispositivo gráfico en seis ventanas organizadas en tres columnas de dos filas habría que teclear
par(mfrow=c(2,3))
lo que, tras la siguiente serie de instrucciones, permite obtener la Figura [*].
plot(density(scale(cars$speed)),col=4,lwd=2,ylim=c(0,0.5),

main="Densidad(velocidad)",ylab="densidad",xlab="")
hist(cars$speed,col=3, main="Histograma(velocidad)",

ylab="frecuencia",xlab="velocidad")
plot(cars$speed,cars$dist,main="Dispersión(vel/dist)",

xlab="velocidad",ylab="distancia")
plot(density(scale(cars$dist)),col=2,lwd=2,ylim=c(0,0.5),

main="Densidad(distancia)",xlab="",ylab="densidad")
hist(cars$dist,col=6,main="Histograma(distancia)",

xlab="distancia",ylab="frecuencia")
plot(cars$dist,cars$speed,main="Dispersión(dist/vel)",

xlab="distancia",ylab="velocidad")

Figura: Figuras múltiples par(mfrow)
Image seis

2007-02-12