R Box Plot

Neste artigo, você aprenderá a criar whisker e box plot na programação R. Você também aprenderá a desenhar múltiplos gráficos de caixas em um único gráfico.

Em R, o boxplot (e o gráfico de whisker) é criado usando a função boxplot() function.

A função boxplot() assume qualquer número de vetores numéricos, desenhando um boxplot para cada vetor.

Você também pode passar em uma lista (ou quadro de dados) com vetores numéricos como seus componentes. Vamos usar o conjunto de dados incorporado airquality que tem “Daily air quality measurements in New York, May to September 1973” -R documentation.

> str(airquality)'data.frame':153 obs. of 6 variables:$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...$ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...$ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...$ Temp : int 67 72 74 62 56 66 65 59 61 69 ...$ Month : int 5 5 5 5 5 5 5 5 5 5 ...$ Day : int 1 2 3 4 5 6 7 8 9 10 ...

Deixe-nos fazer um boxplot para as leituras de ozono.

boxplot(airquality$Ozone)

Plotagem de box padrão em Programação R

Podemos ver que os dados acima da mediana estão mais dispersos. Também podemos notar dois outliers no extremo superior.

Podemos passar em parâmetros adicionais para controlar a aparência do nosso gráfico. Você pode ler sobre eles na seção de ajuda ?boxplot.

Alguns dos mais utilizados são, mainpara dar o título, xlab e ylabpara fornecer etiquetas para os eixos, col para definir a cor, etc.

Adicionalmente, com o argumento horizontal = TRUE podemos plotá-lo horizontalmente e com notch = TRUE podemos adicionar um entalhe na caixa.

boxplot(airquality$Ozone,main = "Mean ozone in parts per billion at Roosevelt Island",xlab = "Parts Per Billion",ylab = "Ozone",col = "orange",border = "brown",horizontal = TRUE,notch = TRUE)

Plotagem da caixa horizontal em R

Valor de retorno da boxplot()

A função boxplot() retorna uma lista com 6 componentes mostrados como se segue.

> b <- boxplot(airquality$Ozone)> b$stats 1.0 18.0 31.5 63.5 122.0attr(,"class")1 "integer" $n 116$conf 24.82518 38.17482$out 135 168$group 1 1$names "1"

Como podemos ver acima, é retornada uma lista que tem stats–tendo a posição dos extremos superior/inferior dos bigodes e caixa junto com a mediana,

  • n– o número de observações com que o boxplot é desenhado (note que NA‘s não são levados em conta)
  • conf-superior/inferior dos extremos do entalhe, out valor dos outliers
  • group um vector do mesmo comprimento do outliers cujos elementos indicam a que grupo o outliers pertence e
  • names um vector de nomes para os grupos.

Multiple Boxploplots

Podemos desenhar múltiplos boxplots num único gráfico, passando numa lista, quadro de dados ou múltiplos vectores.

Deixe-nos considerar o campo Ozone e Temp de airquality conjunto de dados. Vamos também gerar uma distribuição normal com a mesma média e desvio padrão e plotá-los lado a lado para comparação.

# prepare the dataozone <- airquality$Ozonetemp <- airquality$Temp# gererate normal distribution with same mean and sdozone_norm <- rnorm(200,mean=mean(ozone, na.rm=TRUE), sd=sd(ozone, na.rm=TRUE))temp_norm <- rnorm(200,mean=mean(temp, na.rm=TRUE), sd=sd(temp, na.rm=TRUE))

Agora nós fazemos 4 boxplots com estes dados. Usamos os argumentos at e names para denotar o local e etiqueta.

boxplot(ozone, ozone_norm, temp, temp_norm,main = "Multiple boxplots for comparision",at = c(1,2,4,5),names = c("ozone", "normal", "temp", "normal"),las = 2,col = c("orange","red"),border = "brown",horizontal = TRUE,notch = TRUE)

Fórmula Boxplot

A função boxplot() também pode tomar em fórmulas da forma y~x onde, y é um vetor numérico que é agrupado de acordo com o valor de x.

Por exemplo, no nosso conjunto de dados airquality, o Temp pode ser o nosso vector numérico. O mês pode ser a nossa variável de agrupamento, de modo a obtermos o boxplot para cada mês separadamente. Em nosso conjunto de dados, o mês está na forma de número (1=Janeiro, 2-Febuário e assim por diante).

boxplot(Temp~Month,data=airquality,main="Different boxplots for each month",xlab="Month Number",ylab="Degree Fahrenheit",col="orange",border="brown")

Plotagem de caixas múltiplas em uma única parcela

É claro a partir da figura acima que o mês número 7 (Julho) é relativamente mais quente que o resto.