boxplot() u R: Kako napraviti BoxParcele u RStudiu [Primjeri]

boxplot() u R

boxplot() u R pomaลพe vizualizirati distribuciju podataka po kvartilu i otkriti prisutnost outliera. Moลพete koristiti geometrijski objekt geom_boxplot() iz biblioteke ggplot2 za crtanje boxplot() u R.

Koristit ฤ‡emo skup podataka o kvaliteti zraka za uvoฤ‘enje boxplot() u R s ggplot. Ovaj skup podataka mjeri kvalitetu zraka u New Yorku od svibnja do rujna 1973. Skup podataka sadrลพi 154 opaลพanja. Koristit ฤ‡emo sljedeฤ‡e varijable:

  • Ozon: Numeriฤka varijabla
  • Vjetar: Numeriฤka varijabla
  • Mjesec: od svibnja do rujna. Numeriฤka varijabla

stvoriti Box Zemljiลกte

Prije nego poฤnete stvarati svoj prvi boxplot() u R-u, morate manipulirati podacima na sljedeฤ‡i naฤin:

  • Korak 1: Uvezite podatke
  • Korak 2: Izbacite nepotrebne varijable
  • Korak 3: Pretvorite mjesec u razinu faktora
  • Korak 4: Napravite novu kategoriฤku varijablu koja dijeli mjesec na tri razine: poฤetak, sredina i kraj.
  • Korak 5: Uklonite zapaลพanja koja nedostaju

Svi ovi koraci izvode se s dplyr i operatorom cjevovoda %>%.

library(dplyr)
library(ggplot2)
# Step 1
data_air <- airquality % > %

#Step 2
select(-c(Solar.R, Temp)) % > %

#Step 3
mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), 
       
#Step 4 
day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))

Dobra praksa je provjeriti strukturu podataka pomoฤ‡u funkcije glimpse().

glimpse(data_air)

Izlaz:

## Observations: 153
## Variables: 5
## $ Ozone   <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ...
## $ Wind    <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6...
## $ Month   <ord> May, May, May, May, May, May, May, May, May, May, May,...
## $ Day     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...

U skupu podataka postoje NA. Mudro ih je ukloniti.

# Step 5
data_air_nona <-data_air %>% na.omit()	

Osnovna kutijasta parcela

Nacrtajmo osnovni R boxplot() s distribucijom ozona po mjesecima.

# Store the graph
box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone))
# Add the geometric object box plot
box_plot +
    geom_boxplot()

Objaลกnjenje koda

  • Pohranite grafikon za daljnju upotrebu
    • box_plot: Grafikon spremate u varijablu box_plot To je korisno za daljnju upotrebu ili izbjegavanje previลกe sloลพenih linija kodova
  • Dodajte geometrijski objekt R boxplot()
    • Proslijedite skup podataka data_air_nona u ggplot boxplot.
    • Unutar aes() argumenta dodajete x-os i y-os.
    • Znak + znaฤi da ลพelite da R nastavi ฤitati kod. ฤŒini kรดd ฤitljivijim razbijanjem.
    • Upotrijebite geom_boxplot() za izradu okvirnog dijagrama

Izlaz:

osnovni Box Zemljiลกte

Promijenite stranu grafikona

Moลพete okrenuti stranu grafikona.

box_plot +
  geom_boxplot()+
  coord_flip()

Objaลกnjenje koda

  • box_plot: Koristite graf koji ste pohranili. Izbjegava ponovno pisanje svih kodova svaki put kada dodate nove informacije na grafikon.
  • geom_boxplot(): Stvorite boxplots() u R
  • coord_flip(): Okrenite stranu grafa

Izlaz:

Promjena strane grafikona

Promjena boje outliera

Moลพete promijeniti boju, oblik i veliฤinu outliera.

box_plot +
    geom_boxplot(outlier.colour = "red",
        outlier.shape = 2,
        outlier.size = 3) +
    theme_classic()

Objaลกnjenje koda

  • outlier.colour=โ€redโ€: Kontrolirajte boju outliera
  • outlier.shape=2: Promjena oblika outliera. 2 se odnosi na trokut
  • outlier.size=3: Promjena veliฤine trokuta. Veliฤina je proporcionalna broju.

Izlaz:

Promjena boje outliera

Dodajte sumarnu statistiku

Moลพete dodati sumarnu statistiku u R boxplot().

box_plot +
    geom_boxplot() +
    stat_summary(fun.y = mean,
        geom = "point",
        size = 3,
        color = "steelblue") +
    theme_classic()

Objaลกnjenje koda

  • stat_summary() omoguฤ‡uje dodavanje saลพetka u vodoravni okvir R
  • Argument fun.y kontrolira vraฤ‡enu statistiku. Upotrijebit ฤ‡ete zlobno
  • Napomena: Dostupne su i druge statistike kao ลกto su min. i maks. U istom grafikonu moลพe se prikazati viลกe od jedne statistike
  • geom = โ€œtoฤkaโ€: iscrtajte prosjek s toฤkom
  • veliฤina=3: Veliฤina toฤke
  • boja =โ€steelblueโ€: Boja bodova

Izlaz:

Dodajte saลพetak statistike

Box Iscrtaj s toฤkama

U sljedeฤ‡em horizontalnom boxplotu R dodajete slojeve toฤkastog iscrtavanja. Svaka toฤka predstavlja zapaลพanje.

box_plot +
    geom_boxplot() +
    geom_dotplot(binaxis = 'y',
        dotsize = 1,
        stackdir = 'center') +
    theme_classic()

Objaลกnjenje koda

  • geom_dotplot() omoguฤ‡uje dodavanje toฤke ลกirini spremnika
  • binaxis='y': Promjena poloลพaja toฤaka duลพ y-osi. Prema zadanim postavkama, x-os
  • dotsize=1: Veliฤina toฤaka
  • stackdir='center': Naฤin slaganja toฤaka: ฤŒetiri vrijednosti:
    • โ€œgoreโ€ (zadano),
    • โ€œdoljeโ€
    • "centar"
    • โ€œcentralna cjelinaโ€

Izlaz:

Box Iscrtaj s toฤkama

Kontrolna estetika Box Zemljiลกte

Promijenite boju kutije

Moลพete promijeniti boje grupe.

ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) +
    geom_boxplot() +
    theme_classic()

Objaลกnjenje koda

  • Boje grupa kontroliraju se u aes() mapiranju. Moลพete upotrijebiti color= Month da biste promijenili boju dijagrama okvira i brkova prema mjesecima

Izlaz:

Promijenite boju Box

Box parcela s viลกe grupa

Takoฤ‘er je moguฤ‡e dodati viลกe grupa. Moลพete vizualizirati razliku u kvaliteti zraka prema danu mjerenja.

ggplot(data_air_nona, aes(Month, Ozone)) +
    geom_boxplot(aes(fill = day_cat)) +
    theme_classic()

Objaลกnjenje koda

  • Aes() preslikavanje geometrijskog objekta kontrolira grupe za prikaz (ova varijabla mora biti faktor)
  • aes(fill= day_cat) omoguฤ‡uje stvaranje tri okvira za svaki mjesec na x-osi

Izlaz:

Box Zemljiลกte s viลกe grupa

Box Crtanje s isprekidanim toฤkama

Joลก jedan naฤin za prikazivanje toฤke je s iskrivljenim toฤkama. To je prikladan naฤin za vizualizaciju toฤaka s okvirom za kategoriฤke podatke u R varijabli.

Ova metoda izbjegava preklapanje diskretnih podataka.

box_plot +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(width = 0.21)) +
    theme_classic()

Objaลกnjenje koda

  • geom_jitter() dodaje malo opadanja svakoj toฤki.
  • shape=15 mijenja oblik toฤaka. 15 predstavlja kvadrate
  • color = โ€œsteelblueโ€: Promjena boje toฤke
  • position=position_jitter(width = 0.21): Naฤin postavljanja toฤaka preklapanja. position_jitter(width = 0.21) znaฤi da pomiฤete toฤke za 20 posto od x-osi. Standardno 40 posto.

Izlaz:

Box Crtanje s isprekidanim toฤkama

Moลพete vidjeti razliku izmeฤ‘u prvog grafikona s jitter metodom i drugog s point metodom.

box_plot +
    geom_boxplot() +
    geom_point(shape = 5,
        color = "steelblue") +
    theme_classic()

Box Crtanje s isprekidanim toฤkama

Reckast Box Zemljiลกte

Zanimljiva znaฤajka geom_boxplot() je funkcija boxplot s usjecima u R. Grafiฤki prikaz s usjecima suลพava okvir oko medijana. Glavna svrha dijagrama s urezima je usporedba znaฤajnosti medijana izmeฤ‘u skupina. Postoje jaki dokazi da dvije skupine imaju razliฤite medijane kada se zarezi ne preklapaju. Zarez se izraฤunava na sljedeฤ‡i naฤin:

Reckast Box Zemljiลกte

s je interkvartil i broj opaลพanja.

box_plot +
    geom_boxplot(notch = TRUE) +
    theme_classic()

Objaลกnjenje koda

  • geom_boxplot(notch=TRUE): Napravite urezani horizontalni okvir R

Izlaz:

Reckast Box Zemljiลกte

Rezime

Moลพemo saลพeti razliฤite vrste vodoravnog boxplota R u donjoj tablici:

Cilj Kodirati
Osnovna kutijasta parcela
ggplot(df, aes( x = x1, y =y)) + geom_boxplot()
okrenuti stranu
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()
Urezana okvirna parcela
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)
Box plot s isprekidanim toฤkama
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))

Takoฤ‘er provjerite: - R Vodiฤ za poฤetnike: Nauฤite R programski jezik

Saลพmite ovu objavu uz: