boxplot() em R: Como fazer BoxGráficos no RStudio [Exemplos]

boxplot() em R

boxplot() em R ajuda a visualizar a distribuição dos dados por quartil e detectar a presença de outliers. Você pode usar o objeto geométrico geom_boxplot() da biblioteca ggplot2 para desenhar um boxplot() em R.

Usaremos o conjunto de dados de qualidade do ar para introduzir boxplot() em R com ggplot. Este conjunto de dados mede a qualidade do ar de Nova York de maio a setembro de 1973. O conjunto de dados contém 154 observações. Usaremos as seguintes variáveis:

  • Ozônio: Variável numérica
  • Vento: Variável numérica
  • Mês: maio a setembro. Variável numérica

Crie Box Enredo

Antes de começar a criar seu primeiro boxplot() em R, você precisa manipular os dados da seguinte forma:

  • Etapa 1: importe os dados
  • Etapa 2: eliminar variáveis ​​desnecessárias
  • Etapa 3: converter o mês em nível de fator
  • Passo 4: Crie uma nova variável categórica dividindo o mês em três níveis: início, meio e fim.
  • Etapa 5: remover observações ausentes

Todas essas etapas são realizadas com dplyr e o operador de pipeline %>%.

library(dplyr)
library(ggplot2)
# Step 1
data_air <- airquality % > %

#Step 2
select(-c(Solar.R, Temp)) % > %

#Step 3
mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), 
       
#Step 4 
day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))

Uma boa prática é verificar a estrutura dos dados com a função vislumbre().

glimpse(data_air)

Saída:

## Observations: 153
## Variables: 5
## $ Ozone   <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ...
## $ Wind    <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6...
## $ Month   <ord> May, May, May, May, May, May, May, May, May, May, May,...
## $ Day     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...

Existem NAs no conjunto de dados. Removê-los é sábio.

# Step 5
data_air_nona <-data_air %>% na.omit()	

Gráfico de caixa básico

Vamos traçar o boxplot() básico do R com a distribuição do ozônio por mês.

# Store the graph
box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone))
# Add the geometric object box plot
box_plot +
    geom_boxplot()

Explicação do código

  • Armazene o gráfico para uso posterior
    • box_plot: Você armazena o gráfico na variável box_plot É útil para uso posterior ou para evitar linhas de códigos muito complexas
  • Adicione o objeto geométrico de R boxplot()
    • Você passa o conjunto de dados data_air_nona para ggplot boxplot.
    • Dentro do argumento aes(), você adiciona o eixo xey.
    • O sinal + significa que você deseja que R continue lendo o código. Isso torna o código mais legível ao quebrá-lo.
    • Use geom_boxplot() para criar um box plot

Saída:

Basico Box Enredo

Mudar lado do gráfico

Você pode virar a lateral do gráfico.

box_plot +
  geom_boxplot()+
  coord_flip()

Explicação do código

  • box_plot: você usa o gráfico armazenado. Evita reescrever todos os códigos cada vez que você adiciona novas informações ao gráfico.
  • geom_boxplot(): Crie boxplots() em R
  • coord_flip(): vira a lateral do gráfico

Saída:

Mudar lado do gráfico

Alterar a cor do outlier

Você pode alterar a cor, a forma e o tamanho dos valores discrepantes.

box_plot +
    geom_boxplot(outlier.colour = "red",
        outlier.shape = 2,
        outlier.size = 3) +
    theme_classic()

Explicação do código

  • outlier.colour=”red”: Controla a cor dos outliers
  • outlier.shape=2: altera a forma do outlier. 2 refere-se ao triângulo
  • outlier.size=3: Altere o tamanho do triângulo. O tamanho é proporcional ao número.

Saída:

Alterar cor do outlier

Adicione uma estatística resumida

Você pode adicionar uma estatística resumida ao boxplot R ().

box_plot +
    geom_boxplot() +
    stat_summary(fun.y = mean,
        geom = "point",
        size = 3,
        color = "steelblue") +
    theme_classic()

Explicação do código

  • stat_summary() permite adicionar um resumo ao boxplot horizontal R
  • O argumento fun.y controla as estatísticas retornadas. Você usará a média
  • Nota: Outras estatísticas estão disponíveis, como mínimo e máximo. Mais de uma estatística pode ser exibida no mesmo gráfico
  • geom = “ponto”: traça a média com um ponto
  • size=3: Tamanho do ponto
  • color =”steelblue”: Cor dos pontos

Saída:

Adicionar uma estatística resumida

Box Plotar com pontos

No próximo boxplot horizontal R, você adiciona as camadas do gráfico de pontos. Cada ponto representa uma observação.

box_plot +
    geom_boxplot() +
    geom_dotplot(binaxis = 'y',
        dotsize = 1,
        stackdir = 'center') +
    theme_classic()

Explicação do código

  • geom_dotplot() permite adicionar pontos à largura do bin
  • binaxis='y': altera a posição dos pontos ao longo do eixo y. Por padrão, eixo x
  • dotsize=1: Tamanho dos pontos
  • stackdir='center': Maneira de empilhar os pontos: Quatro valores:
    • “para cima” (padrão),
    • "baixa"
    • "Centro"
    • “centro todo”

Saída:

Box Plotar com pontos

Controle Estético do Box Enredo

Mude a cor da caixa

Você pode alterar as cores do grupo.

ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) +
    geom_boxplot() +
    theme_classic()

Explicação do código

  • As cores dos grupos são controladas no mapeamento aes(). Você pode usar color= Month para alterar a cor da caixa e do gráfico de bigodes de acordo com os meses

Saída:

Mude a cor do Box

Box plotar com vários grupos

Também é possível adicionar vários grupos. Você pode visualizar a diferença na qualidade do ar de acordo com o dia da medida.

ggplot(data_air_nona, aes(Month, Ozone)) +
    geom_boxplot(aes(fill = day_cat)) +
    theme_classic()

Explicação do código

  • O mapeamento aes() do objeto geométrico controla os grupos a serem exibidos (esta variável deve ser um fator)
  • aes(fill= day_cat) permite criar três caixas para cada mês no eixo x

Saída:

Box Plotar com vários grupos

Box Plotar com pontos nervosos

Outra forma de mostrar o ponto é com pontos irregulares. É uma maneira conveniente de visualizar pontos com boxplot para dados categóricos na variável R.

Este método evita a sobreposição de dados discretos.

box_plot +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(width = 0.21)) +
    theme_classic()

Explicação do código

  • geom_jitter() adiciona um pouco de decaimento a cada ponto.
  • shape=15 altera a forma dos pontos. 15 representa os quadrados
  • color = “steelblue”: Muda a cor do ponto
  • position=position_jitter(width = 0.21): Forma de colocar os pontos sobrepostos. position_jitter(width = 0.21) significa que você move os pontos em 20% do eixo x. Por padrão, 40 por cento.

Saída:

Box Plotar com pontos nervosos

Você pode ver a diferença entre o primeiro gráfico com o método jitter e o segundo com o método pontual.

box_plot +
    geom_boxplot() +
    geom_point(shape = 5,
        color = "steelblue") +
    theme_classic()

Box Plotar com pontos nervosos

Entalhado Box Enredo

Um recurso interessante de geom_boxplot() é uma função boxplot com entalhe em R. O gráfico com entalhe estreita a caixa ao redor da mediana. O principal objetivo de um box plot entalhado é comparar a significância da mediana entre os grupos. Há fortes evidências de que dois grupos têm medianas diferentes quando os entalhes não se sobrepõem. Um entalhe é calculado da seguinte forma:

Entalhado Box Enredo

with é o interquartil e o número de observações.

box_plot +
    geom_boxplot(notch = TRUE) +
    theme_classic()

Explicação do código

  • geom_boxplot(notch=TRUE): Crie um boxplot horizontal entalhado R

Saída:

Entalhado Box Enredo

Resumo

Podemos resumir os diferentes tipos de boxplot horizontal R na tabela abaixo:

Objetivo Code
Gráfico de caixa básico
ggplot(df, aes( x = x1, y =y)) + geom_boxplot()
vire o lado
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()
Gráfico de caixa entalhada
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)
Box enredo com pontos nervosos
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))

Verifique também: - Tutorial R para iniciantes: Aprenda a linguagem de programação R