R Box Plot

În acest articol, veți învăța să creați diagrame de tip whisker și box în programarea R. Veți învăța, de asemenea, să desenați mai multe box plot-uri într-un singur grafic.

În R, boxplot (și whisker plot) se creează folosind funcția boxplot().

Funcția boxplot() primește orice număr de vectori numerici, desenând un boxplot pentru fiecare vector.

Puteți, de asemenea, să treceți o listă (sau un cadru de date) cu vectori numerici ca și componente ale sale. Să folosim setul de date încorporat airquality care are „Măsurători zilnice ale calității aerului în New York, din mai până în septembrie 1973.” – documentația 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 ...

Să facem un boxplot pentru citirile de ozon.

boxplot(airquality$Ozone)

Default box plot in R Programming

Vezi că datele de deasupra medianei sunt mai dispersate. De asemenea, putem observa două valori aberante la extrema superioară.

Potem trece parametri suplimentari pentru a controla modul în care arată graficul nostru. Puteți citi despre ei în secțiunea de ajutor ?boxplot.

Câțiva dintre cei utilizați frecvent sunt, mainpentru a da titlul, xlab și ylabpentru a furniza etichete pentru axe, col pentru a defini culoarea etc.

În plus, cu argumentul horizontal = TRUE îl putem trasa pe orizontală, iar cu notch = TRUE putem adăuga o crestătură la cutie.

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)

Horizontal box plot in R

Return Value of boxplot()

Funcția boxplot() returnează o listă cu 6 componente prezentate după cum urmează.

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

După cum putem vedea mai sus, se returnează o listă care are stats-având poziția extremelor superioare/inferioare ale mustăților și ale casetei împreună cu mediana,

  • n-numărul de observații cu care este trasat boxplot-ul (observați că nu se iau în considerare cele NA)
  • conf-extremele superioare/inferioare ale crestăturii, valoarea valorilor aberante
  • groupun vector de aceeași lungime cu out ale cărui elemente indică din ce grup face parte valoarea aberantă și
  • namesun vector de nume pentru grupuri.

Multiple Boxplots

Putem desena mai multe boxplots într-un singur grafic, prin trecerea unei liste, a unui cadru de date sau a mai multor vectori.

Să luăm în considerare câmpurile Ozone și Temp din setul de date airquality. Să generăm, de asemenea, o distribuție normală cu aceeași medie și deviație standard și să le trasăm una lângă alta pentru comparație.

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

Acum să realizăm 4 boxplots cu aceste date. Folosim argumentele at și names pentru a indica locul și eticheta.

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

FormaBoxplot Formula

Funcția boxplot() poate primi și formule de forma y~x unde, y este un vector numeric care se grupează în funcție de valoarea lui x.

De exemplu, în setul nostru de date airquality, Temp poate fi vectorul nostru numeric. Luna poate fi variabila noastră de grupare, astfel încât să obținem boxplot pentru fiecare lună în parte. În setul nostru de date, luna este sub formă de număr (1=ianuarie, 2-februarie și așa mai departe).

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

Multiple box plots într-un singur grafic

Este clar din figura de mai sus că luna cu numărul 7 (iulie) este relativ mai caldă decât restul.