{PT} Cinturas em caixas: um tutorial

By Isabella Bicalho Frazeto in Graficos

September 28, 2021

Introdução

Você já pensou como as cinturas em caixas podem ser informativas? Não? Então venha comigo neste mini-tutorial que eu vou te mostrar como! 😊

Nas sessões 1 e 2, mostrarei o que são um boxplot e um violin plot e discutirei - brevemente 😅 - as vantagens de usar cada um deles. Na sessão 3, falo sobre as vantagens de plotar os dois gráficos em conjunto e na sessão 4 mostro como cria-los em .

Box plot

O boxplot - também conhecido como diagrama de caixa, de quartil ou, meu favorito, gráfico de caixa de bigode - é um gráfico que permite visualizar a distribuição do nosso conjunto de dados. É um gráfico clássico em que a mediana é o centro de uma caixa e o primeiro e o terceiro quartil formam o retângulo. Os “bigodes” da caixa são formados pelo limite inferior e pelo limite superior. Normalmente, os outliers (dados discrepantes) são representados por pequenos pontos no gráfico.

Violin plot

O violin plot é bastante similar a um box plot, mas com a vantagem de usar um kernel de densidade simétrico que se distribui em ambos os lados do “violino”; ou seja, ela também consegue refletir a densidade de probabilidade (como aquela linha que a gente costuma ver em cima do histograma). A maior do violin plot é que ela consegue ser mais informativo que um boxplot, pois mostra todo o conjunto dos dados. Infelizmente, não é um gráfico tão popular, o que pode levar a alguma confusão sobre sua interpretação.

Por que usar os dois juntos?

O salto do gato é que você pode plotar o boxplot e o plot do violino no mesmo gráfico. Essa sobreposição é especialmente importante se seus dados forem multimodais, pois isso é evidente no gráfico de violino e não no gráfico de caixa. Outra vantagem é que também evita que você termine com um boxplot, um histograma + estimativa de densidade de kernel para cada variável. Pela própria natureza dos gráficos, também é mais fácil visualizar sua amostra por fatores diferentes.

Tutorial

Comece com a instalação dos pacotes ggplot2 e datasets no seu ambiente . Em seguida, carregue os pacotes instalados.

## Instalar os pacotes
install.packages("ggplot2")
install.packages("datasets")
## Carregar os pacotes
library(datasets)
library(ggplot2)

Aqui, vamos usar dois data sets diferentes: ‘plantGrowth’ e o ‘InsectSprays’.

data("PlantGrowth"); data("InsectSprays")

O conjunto de dados PlantGrowth contém os resultados de um experimento que teve como objetivo comparar o crescimento de plantas entre um grupo de controle com dois outros grupos experimentais. A tabela possui duas variáveis: weight (peso) e group (grupo).

head(PlantGrowth)
##   weight group
## 1   4.17  ctrl
## 2   5.58  ctrl
## 3   5.18  ctrl
## 4   6.11  ctrl
## 5   4.50  ctrl
## 6   4.61  ctrl

Já o dataset InsectSprays é o resultado da contagem de insetos em unidades experimentais agrícolas tratadas com diferentes inseticidas. Possui duas colunas: count (quantidade) e spray.

head(InsectSprays)
##   count spray
## 1    10     A
## 2     7     A
## 3    20     A
## 4    14     A
## 5    14     A
## 6    12     A

PlantGrowth

Com o ggplot2 é possível plotar dois gráficos “sobrepostos” em uma única figura. Para isso utilizamos o simbolo “soma” (+) que vai “unir” dois objetos geométricos gg. Na sequência vemos o primeiro gráfico criado.

ggplot(PlantGrowth, aes(x = weight, # no eixo 'x' vai o peso
                        y = group)) + # no eixo y os 'grupo
        geom_violin() + # plotar o violin plot
        geom_boxplot()  # plotar o boxplot

Como nosso primeiro gráfico não tem uma estética bonita, é possível executar alguns comandos para torná-lo mais agradável e informativo.

O primeiro passo é mudar a largura dos boxplots. Para isso, usaremos o comando width = 0.3 como parâmetro dentro da chamada do boxplot(). Também vamos mudar o tema com a função theme_light(). O objetivo é deixar o gráfico mais coeso.

ggplot(PlantGrowth, aes(x = weight, y = group)) + 
  theme_light() + # mudança de tema (estética) do background
  geom_violin() +
  geom_boxplot(width = 0.3) # diminuição das caixas

Em seguida, você pode escolher alterar o ângulo das caixas, colocando-as na vertical. Nesse caso, apenas peça que as coordenadas sejam invertidas usando coord_flip().

ggplot(PlantGrowth, aes(x = weight, y = group)) + 
  theme_light() +
  geom_violin() +
  geom_boxplot(width = 0.3) +
  coord_flip() # caixas na vertical

Por fim, vamos colorir os violinos e deixas as caixas com contornos em cinza. Para tal usaremos as funções aes(fill = group, color = group, alpha = 0.5) em geom_violin() e color = "grey20" em geom_boxplot(). Também vamos remover a legenda do gráfico com theme(legend.position = "none"), pois a distinção entre grupos já está explicada no eixo x.

ggplot(PlantGrowth, aes(x = weight, y = group)) + 
  theme_light() +
  geom_violin(aes(fill = group, # colorir o interior dos violinos em função dos grupos
                  color = group, # colorir o contorno dos violinos em função dos grupos
                  alpha = 0.5)) + # deixar as cores transparentes (50% de transparência)
  geom_boxplot(width = 0.3, 
               color = "grey30") + # contorno do boxplot em cinza escuro
  coord_flip() +
  theme(legend.position = "none") # retirar a legenda

Insect Sprays

E que tal um segundo exemplo bem simples e charmoso com os dados de InsectSprays?

ggplot(InsectSprays, # tabela de dados
       aes(x = spray, # no eixo 'x' os grupos da coluna spray
           y = count, # no eixo 'y' a contagem de insetos
           color = spray)) + # colorir os gráficos em função de 'spray'
  theme_light() + # mudar o tema do gráfico - cores e estilo do background
  geom_violin() + # plotar o violino
  geom_boxplot(width = 0.05) # plotar as caixas mais 'finas' que o default

FIM!!

O que você achou do texto? Queremos saber a sua opinião! ✌️

Também estamos a disposição para dúvidas! 👇👇

Você pode deixar um comentário nesta postagem (basta logar pelo GitHub) ou lá no nosso twitter!