R Box Plot

V tomto článku se naučíte vytvářet whisker a box plot v R. Naučíte se také vykreslit více krabicových grafů v jednom grafu.

K vytvoření krabicového grafu (a whiskerova grafu) se v R používá funkce boxplot().

Funkce boxplot() přijme libovolný počet číselných vektorů a pro každý vektor vykreslí krabicový graf.

Můžete také předat seznam (nebo datový rámec), jehož součástí jsou číselné vektory. Použijme vestavěný datový soubor airquality, který obsahuje „Denní měření kvality ovzduší v New Yorku, květen až září 1973.“ – dokumentace R.

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

Provedeme boxplot pro hodnoty ozonu.

boxplot(airquality$Ozone)

Výchozí krabicový graf v programování R

Vidíme, že data nad mediánem jsou více rozptýlena. Můžeme si také všimnout dvou odlehlých hodnot ve vyšším extrému.

Můžeme předat další parametry a ovlivnit tak vzhled našeho grafu. Můžete si o nich přečíst v části nápovědy ?boxplot.

Některé z často používaných jsou: mainpro zadání názvu, xlab a ylabpro zadání popisků pro osy, col pro určení barvy atd.

Dále můžeme pomocí argumentu horizontal = TRUE vykreslovat horizontálně a pomocí notch = TRUE můžeme do boxu přidat zářez.

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)

Horizontální box plot v R

Vrácená hodnota funkce boxplot()

Funkce boxplot() vrací seznam se 6 komponentami, které jsou zobrazeny následovně.

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

Jak vidíme výše, vrací se seznam, který má stats-pozici horních/dolních extrémů whiskers a boxu spolu s mediánem,

  • n-počet pozorování, s nimiž je boxplot vykreslen (všimněte si, že NA nejsou brány v úvahu)
  • conf-horní/dolní extrémy výřezu, out-hodnota odlehlých hodnot
  • group-vektor stejné délky jako out, jehož prvky udávají, do které skupiny odlehlá hodnota patří, a
  • names-vektor názvů skupin.

Vícenásobné krabicové grafy

Můžeme vykreslit více krabicových grafů v jednom grafu, a to předáním seznamu, datového rámce nebo více vektorů.

Uvažujme pole Ozone a Temp datového souboru airquality. Vytvořme také normální rozdělení se stejnou střední hodnotou a směrodatnou odchylkou a vykresleme je vedle sebe pro srovnání.

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

Nyní vytvoříme 4 krabicové grafy s těmito daty. Pro označení místa a značky použijeme argumenty at a names.

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 ve tvaru Vzorec

Funkce boxplot() může také přijímat vzorce ve tvaru y~x kde, y je číselný vektor, který je seskupen podle hodnoty x.

Například v našem souboru dat airquality může být Temp náš číselný vektor. Měsíc může být naší seskupující proměnnou, takže získáme boxplot pro každý měsíc zvlášť. V našem souboru dat je měsíc ve tvaru čísla (1=leden, 2-únor atd.).

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

Více krabicových grafů v jednom grafu

Z uvedeného obrázku je zřejmé, že měsíc číslo 7 (červenec) je relativně teplejší než ostatní.

.