Combinando gráficos no R
O R facilita a combinação de vários gráficos em um único gráfico geral, usando as funções thepar( )
ou layout( )
.
Com a função par( )
, você pode incluir a opção mfrow=c(nrows, ncols)
para criar uma matriz de gráficos nrows x ncols que são preenchidos por linha. mfcol=c(nrows, ncols)
preenche a matriz por colunas.
# 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)
A função layout( )
tem o formato layout(mat)
, em que mat
é um objeto de matriz que especifica o local das N figuras a serem plotadas.
# 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, você pode incluir as opções widths= e heights= na função layout( )
para controlar o tamanho de cada figura com mais precisão. Essas opções têm o formato:
- widths= um vetor de valores para as larguras das colunas
- heights= um vetor de valores para as alturas das linhas
As larguras relativas são especificadas com valores numéricos. As larguras absolutas (em centímetros) são especificadas com a função 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)
Consulte help(layout)
para obter mais detalhes.
Criação de um arranjo de figuras com controle preciso
No exemplo a seguir, dois gráficos de caixa são adicionados ao scatterplot para criar um gráfico aprimorado.
# 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 esse gráfico, pense na área total do gráfico como indo de (0,0) no canto inferior esquerdo a (1,1) no canto superior direito. O formato do parâmetro fig=
é um vetor numérico do formato c(x1, x2, y1, y2). O primeiro fig=
configura o gráfico de dispersão que vai de 0 a 0,8 no eixo x e de 0 a 0,8 no eixo y. O boxplot superior vai de 0 a 0,8 no eixo x e de 0,55 a 1 no eixo y. Escolhi 0,55 em vez de 0,8 para que a figura superior fique mais próxima do gráfico de dispersão. O boxplot do lado direito vai de 0,65 a 1 no eixo x e de 0 a 0,8 no eixo y. Novamente, escolhi um valor para aproximar o boxplot do lado direito do gráfico de dispersão. Você precisa experimentar para obter o resultado certo.
fig=
inicia um novo gráfico, portanto, para adicionar a um gráfico existente, use new=TRUE
.
Você pode usar isso para combinar vários gráficos em qualquer disposição em um único gráfico.
Para praticar
Experimente o primeiro capítulo gratuito deste curso interativo de visualização de dados, que aborda a combinação de gráficos.
Este conteúdo foi extraído do site statmethods.net.