R Box Plot

In dit artikel leert u whisker- en boxplots te maken in R programmering. U leert ook om meerdere boxplots in één plot te tekenen.

In R wordt een boxplot (en whisker plot) gemaakt met behulp van de functie boxplot().

De functie boxplot() neemt een willekeurig aantal numerieke vectoren op en tekent voor elke vector een boxplot.

U kunt ook een lijst (of dataframe) met numerieke vectoren als componenten opgeven. Laten we de ingebouwde dataset airquality gebruiken met “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 ...

Laten we een boxplot maken voor de ozonmetingen.

boxplot(airquality$Ozone)

Default boxplot in R Programming

We kunnen zien dat de gegevens boven de mediaan meer verspreid zijn. We zien ook twee uitschieters aan het hoogste uiterste.

We kunnen extra parameters invoeren om te bepalen hoe onze plot eruitziet. U kunt hierover lezen in de help-sectie ?boxplot.

Enkele van de vaak gebruikte zijn, mainom de titel te geven, xlab en ylab om labels voor de assen te geven, col om kleur te definiëren enz.

Extra, met het argument horizontal = TRUE kunnen we het horizontaal plotten en met notch = TRUE kunnen we een inkeping toevoegen aan de box.

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)

Horizontale boxplot in R

Return Waarde van boxplot()

De boxplot() functie retourneert een lijst met 6 componenten die als volgt wordt weergegeven.

> 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"

Zoals we hierboven kunnen zien, wordt een lijst geretourneerd met stats-de positie van de bovenste/onderste extremen van de whiskers en box samen met de mediaan,

  • nhet aantal observaties waarmee de boxplot is getekend (merk op dat NA’s niet worden meegerekend)
  • conf-bovenste/onderste extremen van de inkeping, out-waarde van de uitbijters
  • group-een vector van dezelfde lengte als uit waarvan de elementen aangeven tot welke groep de uitbijter behoort en
  • names-een vector van namen voor de groepen.

Meervoudige boxplots

We kunnen meerdere boxplots tekenen in een enkele plot, door een lijst, dataframe of meerdere vectoren door te geven.

Laten we het Ozone en Temp veld van airquality dataset beschouwen. Laten we ook een normale verdeling genereren met hetzelfde gemiddelde en standaardafwijking en deze naast elkaar plotten ter vergelijking.

# 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))

Nu maken we 4 boxplots met deze gegevens. We gebruiken de argumenten at en names om de plaats en het label aan te geven.

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)

r-multiple-boxplot

Boxplot-vorm Formule

De functie boxplot() kan ook formules aannemen van de vorm y~x waarbij, y een numerieke vector is die gegroepeerd is volgens de waarde van x.

In onze dataset airquality bijvoorbeeld, kan Temp onze numerieke vector zijn. Maand kan onze groeperingsvariabele zijn, zodat we de boxplot voor elke maand afzonderlijk krijgen. In onze dataset heeft de maand de vorm van een getal (1=januari, 2-febuari enzovoort).

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

Meerdere boxplots in één plot

Uit bovenstaande figuur blijkt duidelijk dat maand nummer 7 (juli) relatief heter is dan de rest.