boxplot() i R: Hvordan lage BoxPlotter i RStudio [Eksempler]

boxplot() i R

boxplot() i R hjelper til med รฅ visualisere fordelingen av dataene etter kvartil og oppdage tilstedevรฆrelsen av uteliggere. Du kan bruke det geometriske objektet geom_boxplot() fra ggplot2-biblioteket til รฅ tegne et boxplot() i R.

Vi vil bruke luftkvalitetsdatasettet til รฅ introdusere boxplot() i R med ggplot. Dette datasettet mรฅler luftkvaliteten i New York fra mai til september 1973. Datasettet inneholder 154 observasjoner. Vi vil bruke fรธlgende variabler:

  • Ozon: Numerisk variabel
  • Vind: Numerisk variabel
  • Mรฅned: mai til september. Numerisk variabel

Opprett Box Plott

Fรธr du begynner รฅ lage ditt fรธrste boxplot() i R, mรฅ du manipulere dataene som fรธlger:

  • Trinn 1: Importer dataene
  • Trinn 2: Slipp unรธdvendige variabler
  • Trinn 3: Konverter mรฅned i faktornivรฅ
  • Trinn 4: Lag en ny kategorisk variabel som deler mรฅneden med tre nivรฅer: begynnelse, midt og slutt.
  • Trinn 5: Fjern manglende observasjoner

Alle disse trinnene gjรธres med dplyr og rรธrledningsoperatรธ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 รฅ sjekke strukturen til dataene med funksjonen glimpse().

glimpse(data_air)

Utgang:

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

Det er NA-er i datasettet. ร… fjerne dem er lurt.

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

Grunnleggende boksplott

La oss plotte det grunnleggende R-boksplot() med fordelingen av ozon etter 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

  • Lagre grafen for videre bruk
    • box_plot: Du lagrer grafen i variabelen box_plot. Det er nyttig for videre bruk eller unngรฅ for komplisert kodelinje
  • Legg til det geometriske objektet til R boxplot()
    • Du sender datasettet data_air_nona til ggplot boxplot.
    • Inne i aes()-argumentet legger du til x-aksen og y-aksen.
    • +-tegnet betyr at du vil at R skal fortsette รฅ lese koden. Det gjรธr koden mer lesbar ved รฅ bryte den.
    • Bruk geom_boxplot() for รฅ lage et boksplott

Utgang:

Basic Box Plott

Bytt side av grafen

Du kan snu siden av grafen.

box_plot +
  geom_boxplot()+
  coord_flip()

Kode Forklaring

  • box_plot: Du bruker grafen du lagret. Den unngรฅr รฅ skrive om alle kodene hver gang du legger til ny informasjon i grafen.
  • geom_boxplot(): Lag boxplots() i R
  • coord_flip(): Vend siden av grafen

Utgang:

Bytt side av grafen

Endre farge pรฅ ytterside

Du kan endre farge, form og stรธrrelse pรฅ uteliggere.

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

Kode Forklaring

  • outlier.colour=โ€rรธdโ€: Kontroller fargen pรฅ uteliggere
  • outlier.shape=2: Endre formen pรฅ uteliggeren. 2 refererer til trekant
  • outlier.size=3: Endre stรธrrelsen pรฅ trekanten. Stรธrrelsen er proporsjonal med antallet.

Utgang:

Endre Farge pรฅ Outlier

Legg til en sammendragsstatistikk

Du kan legge til en oppsummeringsstatistikk til R boxplot().

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

Kode Forklaring

  • stat_summary() tillater รฅ legge til et sammendrag til det horisontale boksplot R
  • Argumentet fun.y styrer statistikken som returneres. Du vil bruke middel
  • Merk: Annen statistikk er tilgjengelig som min og maks. Mer enn รฉn statistikk kan vises i samme graf
  • geom = "punkt": Plott gjennomsnittet med et punkt
  • stรธrrelse=3: Stรธrrelsen pรฅ punktet
  • farge =โ€stรฅlblรฅโ€: Farge pรฅ punktene

Utgang:

Legg til en sammendragsstatistikk

Box Plott med prikker

I neste horisontale boksplott R legger du til punktplottlagene. Hver prikk representerer en observasjon.

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

Kode Forklaring

  • geom_dotplot() gjรธr det mulig รฅ legge til dot til beholderens bredde
  • binaxis='y': Endre posisjonen til prikkene langs y-aksen. Som standard, x-aksen
  • dotsize=1: Stรธrrelsen pรฅ prikkene
  • stackdir='center': Mรฅte รฅ stable prikkene pรฅ: Fire verdier:
    • "opp" (standard),
    • "ned"
    • "senter"
    • "hele midten"

Utgang:

Box Plott med prikker

Kontroll Estetikk av Box Plott

Endre fargen pรฅ boksen

Du kan endre fargene pรฅ gruppen.

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

Kode Forklaring

  • Fargene til gruppene kontrolleres i aes()-tilordningen. Du kan bruke color= Month for รฅ endre fargen pรฅ boksen og vรฆrhรฅrsplottet i henhold til mรฅnedene

Utgang:

Endre fargen pรฅ Box

Box plott med flere grupper

Det er ogsรฅ mulig รฅ legge til flere grupper. Du kan visualisere forskjellen i luftkvaliteten i henhold til mรฅledagen.

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

Kode Forklaring

  • Aes()-tilordningen av det geometriske objektet kontrollerer gruppene som skal vises (denne variabelen mรฅ vรฆre en faktor)
  • aes(fill= day_cat) lar deg lage tre bokser for hver mรฅned i x-aksen

Utgang:

Box Plott med flere grupper

Box Plott med rystede prikker

En annen mรฅte รฅ vise prikken pรฅ er med rystede punkter. Det er en praktisk mรฅte รฅ visualisere punkter med boxplot for kategoriske data i R-variabel.

Denne metoden unngรฅr overlapping av de diskrete dataene.

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

Kode Forklaring

  • geom_jitter() legger til litt forfall til hvert punkt.
  • shape=15 endrer formen pรฅ punktene. 15 representerer rutene
  • farge = "stรฅlblรฅ": Endre fargen pรฅ punktet
  • position=position_jitter(width = 0.21): Mรฅte รฅ plassere de overlappende punktene. position_jitter(width = 0.21) betyr at du flytter punktene med 20 prosent fra x-aksen. Som standard, 40 prosent.

Utgang:

Box Plott med rystede prikker

Du kan se forskjellen mellom den fรธrste grafen med jittermetoden og den andre med punktmetoden.

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

Box Plott med rystede prikker

hakk Box Plott

Et interessant trekk ved geom_boxplot(), er en notched boxplot-funksjon i R. Notchplotten begrenser boksen rundt medianen. Hovedformรฅlet med et hakkede boksplott er รฅ sammenligne betydningen av medianen mellom grupper. Det er sterke bevis for at to grupper har forskjellige medianer nรฅr hakkene ikke overlapper hverandre. Et hakk beregnes som fรธlger:

hakk Box Plott

med er interkvartil og antall observasjoner.

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

Kode Forklaring

  • geom_boxplot(notch=TRUE): Lag et horisontalt boksplot R med hakk

Utgang:

hakk Box Plott

Sammendrag

Vi kan oppsummere de forskjellige typene horisontale boksplott R i tabellen nedenfor:

Mรฅlet Kode
Grunnleggende boksplott
ggplot(df, aes( x = x1, y =y)) + geom_boxplot()
snu siden
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()
Hakket boksplott
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)
Box plott med rystede prikker
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))

Sjekk ogsรฅ: - R-opplรฆring for nybegynnere: Lรฆr R-programmeringssprรฅk

Oppsummer dette innlegget med: