boxplot() w R: Jak to zrobić BoxWykresy w RStudio [Przykłady]

boxplot() w R

boxplot() w R pomaga wizualizować rozkład danych według kwartyli i wykrywać obecność wartości odstających. Możesz użyć obiektu geometrycznego geom_boxplot() z biblioteki ggplot2, aby narysować boxplot() w R.

Użyjemy zestawu danych airquality, aby wprowadzić boxplot() w R z ggplot. Ten zestaw danych mierzy jakość powietrza w Nowym Jorku od maja do września 1973 r. Zestaw danych zawiera 154 obserwacje. Użyjemy następujących zmiennych:

  • Ozon: Zmienna numeryczna
  • Wiatr: Zmienna numeryczna
  • Miesiąc: od maja do września. Zmienna numeryczna

Stwórz Box Wątek

Zanim zaczniesz tworzyć swój pierwszy wykres pudełkowy w R, musisz manipulować danymi w następujący sposób:

  • Krok 1: Zaimportuj dane
  • Krok 2: Usuń niepotrzebne zmienne
  • Krok 3: Przelicz miesiąc na poziom czynnika
  • Krok 4: Utwórz nową zmienną kategorialną dzielącą miesiąc na trzy poziomy: początek, środek i koniec.
  • Krok 5: Usuń brakujące obserwacje

Wszystkie te kroki wykonuje się przy użyciu dplyr i operatora potoku %>%.

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

Dobrą praktyką jest sprawdzanie struktury danych za pomocą funkcjispoke().

glimpse(data_air)

Wyjście:

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

W zbiorze danych znajdują się NA. Usunięcie ich jest mądre.

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

Podstawowy wykres pudełkowy

Narysujmy podstawowy wykres pudełkowy R z rozkładem ozonu według miesięcy.

# 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śnienie kodu

  • Zapisz wykres do dalszego wykorzystania
    • box_plot: Wykres jest przechowywany w zmiennej box_plot. Jest to pomocne przy dalszym użytkowaniu lub pozwala uniknąć zbyt skomplikowanych linii kodu
  • Dodaj obiekt geometryczny R boxplot()
    • Przekazujesz zbiór danych data_air_nona do ggplot boxplot.
    • Wewnątrz argumentu aes() dodajesz oś x i oś y.
    • Znak + oznacza, że ​​chcesz, aby R nadal czytał kod. Kod staje się bardziej czytelny, ponieważ go łamie.
    • Użyj geom_boxplot(), aby utworzyć wykres pudełkowy

Wyjście:

Basic Box Wątek

Zmień stronę wykresu

Możesz odwrócić bok wykresu.

box_plot +
  geom_boxplot()+
  coord_flip()

Objaśnienie kodu

  • box_plot: Używasz zapisanego wykresu. Dzięki temu unikniesz przepisywania wszystkich kodów za każdym razem, gdy dodasz nowe informacje do wykresu.
  • geom_boxplot(): Tworzenie wykresów pudełkowych() w R
  • coord_flip(): Odwróć bok wykresu

Wyjście:

Zmień stronę wykresu

Zmień kolor wartości odstającej

Możesz zmienić kolor, kształt i rozmiar wartości odstających.

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

Objaśnienie kodu

  • outlier.color=”red”: Kontroluj kolor wartości odstających
  • outlier.shape=2: Zmień kształt wartości odstającej. 2 odnosi się do trójkąta
  • outlier.size=3: Zmień rozmiar trójkąta. Rozmiar jest proporcjonalny do liczby.

Wyjście:

Zmień kolor wartości odstającej

Dodaj statystykę podsumowującą

Do wykresu pudełkowego R() można dodać statystykę podsumowującą.

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

Objaśnienie kodu

  • stat_summary() pozwala na dodanie podsumowania do poziomego wykresu pudełkowego R
  • Argument fun.y kontroluje zwracane statystyki. Użyjesz środka
  • Uwaga: dostępne są inne statystyki, takie jak min. i maks. Na tym samym wykresie można wyświetlić więcej niż jedną statystykę
  • geom = „punkt”: Wykreśl średnią za pomocą punktu
  • size=3: Rozmiar punktu
  • color =”steelblue”: Kolor punktów

Wyjście:

Dodaj statystykę podsumowującą

Box Fabuła z kropkami

W następnym poziomym wykresie pudełkowym R dodajesz warstwy wykresu punktowego. Każdy punkt reprezentuje obserwację.

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

Objaśnienie kodu

  • geom_dotplot() umożliwia dodanie kropki do szerokości pojemnika
  • binaxis='y': Zmień położenie kropek wzdłuż osi Y. Domyślnie oś X
  • dotsize=1: Rozmiar kropek
  • stackdir='center': Sposób układania kropek: Cztery wartości:
    • „w górę” (domyślnie),
    • "na dół"
    • "Centrum"
    • „centralna całość”

Wyjście:

Box Fabuła z kropkami

Kontroluj estetykę Box Wątek

Zmień kolor pola

Możesz zmienić kolory grupy.

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

Objaśnienie kodu

  • Kolory grup są kontrolowane w mapowaniu aes(). Możesz użyć color= Month, aby zmienić kolor wykresu pudełkowego i wąsowego zgodnie z miesiącami

Wyjście:

Zmień kolor Box

Box wykres z wieloma grupami

Możliwe jest także dodanie wielu grup. Można zwizualizować różnicę w jakości powietrza w zależności od dnia pomiaru.

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

Objaśnienie kodu

  • Mapowanie aes() obiektu geometrycznego kontroluje grupy do wyświetlenia (ta zmienna musi być czynnikiem)
  • aes(fill= day_cat) pozwala na utworzenie trzech pól dla każdego miesiąca na osi x

Wyjście:

Box Wykres z wieloma grupami

Box Fabuła z drgającymi kropkami

Innym sposobem na pokazanie kropki są punkty drgające. Jest to wygodny sposób na wizualizację punktów za pomocą wykresu pudełkowego dla danych kategorycznych w zmiennej R.

Metoda ta pozwala uniknąć nakładania się dyskretnych danych.

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

Objaśnienie kodu

  • geom_jitter() dodaje niewielki zanik do każdego punktu.
  • kształt=15 zmienia kształt punktów. 15 reprezentuje kwadraty
  • color = „steelblue”: Zmień kolor punktu
  • position=position_jitter(width = 0.21): Sposób umieszczania nakładających się punktów. position_jitter(width = 0.21) oznacza, że ​​przesuwasz punkty o 20 procent od osi x. Domyślnie 40 procent.

Wyjście:

Box Fabuła z drgającymi kropkami

Widać różnicę pomiędzy pierwszym wykresem wykonanym metodą jittera, a drugim wykonanym metodą punktową.

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

Box Fabuła z drgającymi kropkami

Szorstki Box Wątek

Ciekawą cechą geom_boxplot() jest funkcja wykresu pudełkowego z wycięciami w R. Wykres z wycięciami zawęża pole wokół mediany. Głównym celem wykresu pudełkowego z wycięciami jest porównanie istotności mediany między grupami. Istnieją mocne dowody na to, że dwie grupy mają różne mediany, gdy wycięcia się nie nakładają. Wycięcie oblicza się w następujący sposób:

Szorstki Box Wątek

gdzie jest międzykwartylem i liczbą obserwacji.

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

Objaśnienie kodu

  • geom_boxplot(notch=TRUE): Utwórz poziomy wykres pudełkowy z wycięciami R

Wyjście:

Szorstki Box Wątek

Podsumowanie

W poniższej tabeli możemy podsumować różne typy poziomego wykresu pudełkowego R:

Cel Code
Podstawowy wykres pudełkowy
ggplot(df, aes( x = x1, y =y)) + geom_boxplot()
obróć bok
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()
Wykres pudełkowy z karbem
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)
Box wykres z drgającymi kropkami
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))

Sprawdź również: - Samouczek R dla początkujących: Naucz się języka programowania R