boxplot() i R: Sådan laver du BoxPlotter i RStudio [Eksempler]
boxplot() i R
boxplot() i R hjælper med at visualisere fordelingen af data efter kvartil og detektere tilstedeværelsen af outliers. Du kan bruge det geometriske objekt geom_boxplot() fra ggplot2-biblioteket til at tegne et boxplot() i R.
Vi vil bruge luftkvalitetsdatasættet til at introducere boxplot() i R med ggplot. Dette datasæt måler luftkvaliteten i New York fra maj til september 1973. Datasættet indeholder 154 observationer. Vi vil bruge følgende variable:
- Ozon: Numerisk variabel
- Vind: Numerisk variabel
- Måned: maj til september. Numerisk variabel
Opret Box Grund
Før du begynder at oprette dit første boxplot() i R, skal du manipulere dataene som følger:
- Trin 1: Importer dataene
- Trin 2: Drop unødvendige variabler
- Trin 3: Konverter måned i faktorniveau
- Trin 4: Opret en ny kategorisk variabel, der deler måneden med tre niveauer: start, midt og slut.
- Trin 5: Fjern manglende observationer
Alle disse trin udføres med dplyr og pipeline-operatøren %>%.
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"))))
En god praksis er at tjekke strukturen af dataene med funktionen glimpse().
glimpse(data_air)
Output:
## 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...
Der er NA'er i datasættet. Det er klogt at fjerne dem.
# Step 5 data_air_nona <-data_air %>% na.omit()
Grundlæggende boksplot
Lad os plotte det grundlæggende R boxplot() med fordelingen af ozon efter måned.
# Store the graph box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone)) # Add the geometric object box plot box_plot + geom_boxplot()
Kode Forklaring
- Gem grafen til videre brug
- box_plot: Du gemmer grafen i variablen box_plot. Det er nyttigt til videre brug eller undgå en for kompleks kodelinje
- Tilføj det geometriske objekt af R boxplot()
- Du videregiver datasættet data_air_nona til ggplot boxplot.
- Inde i aes()-argumentet tilføjer du x-aksen og y-aksen.
- + tegnet betyder, at du vil have R til at blive ved med at læse koden. Det gør koden mere læsbar ved at bryde den.
- Brug geom_boxplot() til at oprette et boxplot
Output:
Skift side af grafen
Du kan vende siden af grafen.
box_plot + geom_boxplot()+ coord_flip()
Kode Forklaring
- box_plot: Du bruger den graf du har gemt. Det undgår at omskrive alle koderne, hver gang du tilføjer ny information til grafen.
- geom_boxplot(): Opret boxplots() i R
- coord_flip(): Vend siden af grafen
Output:
Skift farve på udliggeren
Du kan ændre farven, formen og størrelsen på udliggere.
box_plot + geom_boxplot(outlier.colour = "red", outlier.shape = 2, outlier.size = 3) + theme_classic()
Kode Forklaring
- outlier.colour=”rød”: Styr farven på afvigerne
- outlier.shape=2: Skift formen på outlieren. 2 henviser til trekant
- outlier.size=3: Ændre størrelsen på trekanten. Størrelsen er proportional med antallet.
Output:
Tilføj en opsummerende statistik
Du kan tilføje en opsummerende statistik til R boxplot().
box_plot + geom_boxplot() + stat_summary(fun.y = mean, geom = "point", size = 3, color = "steelblue") + theme_classic()
Kode Forklaring
- stat_summary() gør det muligt at tilføje et resume til det horisontale boxplot R
- Argumentet fun.y styrer de returnerede statistikker. Du vil bruge middelværdi
- Bemærk: Andre statistikker er tilgængelige, såsom min og max. Mere end én statistik kan vises i samme graf
- geom = "punkt": Plot gennemsnittet med et punkt
- størrelse=3: Størrelse af spidsen
- farve =”stålblå”: Farve på punkterne
Output:
Box Plot med prikker
I det næste vandrette boxplot R tilføjer du dot plot-lagene. Hver prik repræsenterer en observation.
box_plot + geom_boxplot() + geom_dotplot(binaxis = 'y', dotsize = 1, stackdir = 'center') + theme_classic()
Kode Forklaring
- geom_dotplot() tillader tilføjelse af prik til bin-bredden
- binaxis='y': Ændre placeringen af prikkerne langs y-aksen. Som standard x-akse
- dotsize=1: Størrelsen på prikkerne
- stackdir='center': Måde at stable prikkerne på: Fire værdier:
- "op" (standard),
- "ned"
- "centrum"
- "hele midten"
Output:
Kontrol Æstetik af Box Grund
Skift farven på boksen
Du kan ændre gruppens farver.
ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) + geom_boxplot() + theme_classic()
Kode Forklaring
- Farverne på grupperne styres i aes()-tilknytningen. Du kan bruge color= Month til at ændre farven på boksen og whisker plot i henhold til månederne
Output:
Box plot med flere grupper
Det er også muligt at tilføje flere grupper. Du kan visualisere forskellen i luftkvaliteten alt efter måledagen.
ggplot(data_air_nona, aes(Month, Ozone)) + geom_boxplot(aes(fill = day_cat)) + theme_classic()
Kode Forklaring
- Aes()-tilknytningen af det geometriske objekt styrer grupperne, der skal vises (denne variabel skal være en faktor)
- aes(fill= day_cat) giver mulighed for at oprette tre kasser for hver måned i x-aksen
Output:
Box Plot med rystede prikker
En anden måde at vise prikken på er med rystede punkter. Det er en bekvem måde at visualisere punkter med boxplot for kategoriske data i R-variabel.
Denne metode undgår overlapning af de diskrete data.
box_plot + geom_boxplot() + geom_jitter(shape = 15, color = "steelblue", position = position_jitter(width = 0.21)) + theme_classic()
Kode Forklaring
- geom_jitter() tilføjer et lille henfald til hvert punkt.
- form=15 ændrer punkternes form. 15 repræsenterer kvadraterne
- farve = "stålblå": Skift farven på punktet
- position=position_jitter(width = 0.21): Måde at placere de overlappende punkter. position_jitter(width = 0.21) betyder, at du flytter punkterne 20 procent fra x-aksen. Som standard er 40 pct.
Output:
Du kan se forskellen mellem den første graf med jittermetoden og den anden med punktmetoden.
box_plot + geom_boxplot() + geom_point(shape = 5, color = "steelblue") + theme_classic()
Afskåret Box Grund
Et interessant træk ved geom_boxplot(), er en notched boxplot-funktion i R. Notch-plottet indsnævrer boksen omkring medianen. Hovedformålet med et notched box plot er at sammenligne betydningen af medianen mellem grupper. Der er stærke beviser for, at to grupper har forskellige medianer, når hakkene ikke overlapper hinanden. Et hak beregnes som følger:
med er interkvartilen og antallet af observationer.
box_plot + geom_boxplot(notch = TRUE) + theme_classic()
Kode Forklaring
- geom_boxplot(notch=TRUE): Opret et vandret boxplot R
Output:
Resumé
Vi kan opsummere de forskellige typer af horisontalt boxplot R i tabellen nedenfor:
Objektiv | Kode |
---|---|
Grundlæggende boksplot |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() |
vend siden |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip() |
Afhugget kasseplot |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE) |
Box plot med rystede prikker |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21)) |
Tjek også:- R Tutorial for begyndere: Lær R programmeringssprog