Combinar gráficos en R
R facilita la combinación de varios gráficos en un gráfico global, utilizando las funciones thepar( )
o layout( )
.
Con la función par( )
, puedes incluir la opción mfrow=c(nrows, ncols)
para crear una matriz de tramas n filas x n columnas que se rellena por filas. mfcol=c(nrows, ncols)
rellena la matriz por columnas.
# 4 figures arranged in 2 rows and 2 columns
attach(mtcars)
par(mfrow=c(2,2))
plot(wt,mpg, main="Scatterplot of wt vs. mpg")
plot(wt,disp, main="Scatterplot of wt vs disp")
hist(wt, main="Histogram of wt")
boxplot(wt, main="Boxplot of wt")
# 3 figures arranged in 3 rows and 1 column
attach(mtcars)
par(mfrow=c(3,1))
hist(wt)
hist(mpg)
hist(disp)
La función layout( )
tiene la forma layout(mat)
donde mat
es un objeto matriz que especifica la ubicación de las N figuras a trazar.
# One figure in row 1 and two figures in row 2
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
hist(wt)
hist(mpg)
hist(disp)
Opcionalmente, puedes incluir las opciones anchura= y altura= en la función layout( )
para controlar el tamaño de cada figura con mayor precisión. Estas opciones tienen la forma
- anchuras= un vector de valores para las anchuras de las columnas
- alturas= un vector de valores para las alturas de las filas
Las anchuras relativas se especifican con valores numéricos. Las anchuras absolutas (en centímetros) se especifican con la función lcm()
.
# One figure in row 1 and two figures in row 2
# row 1 is 1/3 the height of row 2
# column 2 is 1/4 the width of the column 1
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE),
widths=c(3,1), heights=c(1,2))
hist(wt)
hist(mpg)
hist(disp)
Consulta help(layout)
para más detalles.
Crear un arreglo de figuras con control fino
En el siguiente ejemplo, se añaden dos gráficos de caja a scatterplot para crear un gráfico mejorado.
# Add boxplots to a scatterplot
par(fig=c(0,0.8,0,0.8), new=TRUE)
plot(mtcars$wt, mtcars$mpg, xlab="Car Weight",
ylab="Miles Per Gallon")
par(fig=c(0,0.8,0.55,1), new=TRUE)
boxplot(mtcars$wt, horizontal=TRUE, axes=FALSE)
par(fig=c(0.65,1,0,0.8),new=TRUE)
boxplot(mtcars$mpg, axes=FALSE)
mtext("Enhanced Scatterplot", side=3, outer=TRUE, line=-3)
Para entender este gráfico, piensa que el área completa del gráfico va desde (0,0) en la esquina inferior izquierda hasta (1,1) en la esquina superior derecha. El formato del parámetro fig=
es un vector numérico de la forma c(x1, x2, y1, y2). El primer fig=
establece el gráfico de dispersión que va de 0 a 0,8 en el eje x y de 0 a 0,8 en el eje y. El boxplot superior va de 0 a 0,8 en el eje x y de 0,55 a 1 en el eje y. He elegido 0,55 en lugar de 0,8 para que la figura superior se acerque más al gráfico de dispersión. El boxplot de la derecha va de 0,65 a 1 en el eje x y de 0 a 0,8 en el eje y. De nuevo, elegí un valor para acercar el diagrama de caja de la derecha al diagrama de dispersión. Tienes que experimentar para conseguirlo.
fig=
inicia una nueva parcela, así que para añadirla a una parcela existente utiliza new=TRUE
.
Puedes utilizarlo para combinar varios gráficos en cualquier disposición en un solo gráfico.
Practicar
Prueba gratis el primer capítulo de este curso interactivo de visualización de datos, que trata sobre la combinación de gráficos.
Este contenido ha sido extraído de statmethods.net.