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)
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: main
pro zadání názvu, xlab
a ylab
pro 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)
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, žeNA
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)
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")
Z uvedeného obrázku je zřejmé, že měsíc číslo 7 (červenec) je relativně teplejší než ostatní.
.