Crie Boxplots Lado a Lado em R

Jinku Hu 30 janeiro 2023
  1. Use a função par para criar boxplots lado a lado em R
  2. Use a função grid.arrange para criar boxplots lado a lado em R
Crie Boxplots Lado a Lado em R

Este artigo apresentará métodos de criação de boxplots lado a lado em R.

Use a função par para criar boxplots lado a lado em R

A função par pode ser usada para definir parâmetros gráficos. Chamar a função sem argumentos ou no.readonly = TRUE recupera todos os parâmetros gráficos. Neste caso, utilizamos o parâmetro mfrow para construir boxplots lado a lado. mfrow é passado no vetor c(nr, nc) e os gráficos subsequentes são desenhados como array nr -by- nc. O código de exemplo a seguir constrói dois boxplots do conjunto de dados InsectSprays, onde as colunas count e spray são plotadas de acordo. Mesmo que uma revisão aprofundada da função boxplot esteja além do escopo deste artigo, é necessário o argumento col para especificar a cor dos corpos da caixa. Observe que a última chamada de função par(mfrow=c(1,1)) é usada para redefinir o layout para a configuração padrão.

par(mfrow=c(1,2))
boxplot(count ~ spray, data = InsectSprays, col = "pink")
boxplot(count ~ spray, data = InsectSprays, col = "yellow")
par(mfrow=c(1,1))

lado a lado boxplot r 1

Use a função grid.arrange para criar boxplots lado a lado em R

Alternativamente, podemos usar a função grid.arrange do pacote gridExtra. grid.arrange se comporta de maneira semelhante à função par. Ainda assim, é mais flexível e intuitivo com múltiplos plots, especialmente objetos ggplot. grid.arrange leva um comprimento variável de objetos ggplot como argumentos iniciais. Depois, podemos especificar argumentos opcionais, a saber, o parâmetro ncol denotando o número de colunas que precisam ser criadas para os gráficos. O próximo trecho de código desenha dois boxplots lado a lado.

library(ggplot2)
library(gridExtra)

plot1 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "pink")
plot2 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "yellow")
grid.arrange(plot1, plot2, ncol = 2)

lado a lado boxplot r 2

grid.arrange também pode criar janelas de divisão bidimensional especificadas usando os parâmetros nrow e ncol. Observe que os objetos ggplot podem ser combinados em uma lista e passados ​​na forma do argumento grobs = list(...). O exemplo a seguir produz quatro boxplots em um estilo de array dois por dois.

library(ggplot2)
library(gridExtra)

plot1 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "pink")
plot2 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "yellow")
plot3 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "orange")
plot4 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "cyan")
grid.arrange(plot1, plot2, plot3, plot4, nrow = 2, ncol = 2)

boxplot lado a lado r 3

Outro parâmetro útil para a função grid.arrange é layout_matrix, que posiciona cada gráfico em uma estrutura personalizada especificada com vetores combinados. O exemplo define três diferentes objetos de plotagem construídos em uma estrutura de janela assimétrica - duas plotagens no topo e uma embaixo. O número de vetores em rbind corresponde às linhas da janela, e os elementos em cada objeto especificam o número de partes em que a linha da janela deve ser dividida. Enquanto isso, os números correspondem aos gráficos de argumento na mesma ordem. Se todas as janelas divididas na segunda linha devem ser ocupadas pelo terceiro gráfico, então todos os elementos no segundo vetor devem ter valor - 3.

library(ggplot2)
library(gridExtra)

plot1 <- ggplot(InsectSprays, aes(x = spray, y = count)) + geom_boxplot(fill = "pink")
plot2 <- ggplot(mtcars, aes(x = mpg)) + geom_histogram(fill = "yellow", bins = 30)
plot3 <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point(fill = "orange")

grid.arrange(plot1, plot2, plot3, widths = c(2, 2, 1),
    layout_matrix = rbind(c(1, 2, 2), c(3, 3, 3)))

lado a lado boxplot r 4

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - R Plot