Jak oznaczyć wartości odstające na wykresach pudełkowych w ggplot2


W tym samouczku przedstawiono krok po kroku przykład oznaczania wartości odstających na wykresach skrzynkowych w ggplot2.

Krok 1: Utwórz ramkę danych

Najpierw utwórzmy następującą ramkę danych zawierającą informacje o punktach zdobytych przez 60 różnych koszykarzy w trzech różnych drużynach:

 #make this example reproducible
set. seeds (1)

#create data frame
df <- data. frame (team=rep(c('A', 'B', 'C'), each= 20 ),
                 player=rep(LETTERS[1:20], times= 3 ),
                 points=round(rnorm(n=60, mean=30, sd=10), 2))

#view head of data frame
head(df)

  team player points
1 AA 23.74
2AB 31.84
3 AC 21.64
4AD 45.95
5 AE 33.30
6 FY 21.80

Uwaga : Użyliśmy funkcji set.seed() , aby upewnić się, że ten przykład jest odtwarzalny.

Krok 2: Zdefiniuj funkcję identyfikującą wartości odstające

W ggplot2 obserwacja jest definiowana jako wartość odstająca, jeśli spełnia jeden z dwóch następujących wymagań:

  • Obserwacja jest 1,5-krotnością rozstępu międzykwartylowego poniżej pierwszego kwartyla (Q1)
  • Obserwacja jest 1,5-krotnością rozstępu międzykwartylowego powyżej trzeciego kwartyla (Q3).

Możemy utworzyć następującą funkcję w R, aby oznaczyć obserwacje jako wartości odstające, jeśli spełniają jeden z tych dwóch wymagań:

 find_outlier <- function (x) {
  return (x < quantile(x, .25) - 1.5*IQR(x) | x > quantile(x, .75) + 1.5*IQR(x))
}

Powiązane: Jak interpretować rozstęp międzykwartylowy

Krok 3: Oznacz wartości odstające na wykresach pudełkowych w ggplot2

Następnie możemy użyć następującego kodu do oznaczenia wartości odstających na wykresach pudełkowych w ggplot2:

 library (ggplot2)
library (dplyr)

#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
        group_by(team) %>%
        mutate(outlier = ifelse(find_outlier(points), points, NA))

#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
  geom_boxplot() +
  geom_text(aes(label=outlier), na. rm = TRUE , hjust= -.5 ) 

oznacz wartości odstające na wykresach pudełkowych w ggplot2

Należy zwrócić uwagę, że na wykresie zaznaczono dwie wartości odstające.

Pierwszą osobą odstającą jest zawodnik Drużyny A, który zdobył 7,85 punktu, a drugą osobą odstającą jest zawodnik Drużyny B, który zdobył 10,11 punktu.

Należy zauważyć, że możemy również użyć innej zmiennej do oznaczenia tych wartości odstających.

Na przykład możemy zamienić punkty gracza w funkcji mutate() , aby oznaczyć wartości odstające na podstawie nazwy gracza:

 library (ggplot2)
library (dplyr)

#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
        group_by(team) %>%
        mutate(outlier = ifelse(find_outlier(points), player, NA))

#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
  geom_boxplot() +
  geom_text(aes(label=outlier), na. rm = TRUE , hjust= -.5 ) 

Element odstający drużyny A ma teraz etykietę N , a element odstający drużyny B ma teraz etykietę D , ponieważ reprezentują one nazwiska graczy, którzy mają wartości odstające w zakresie punktów.

Uwaga : Argument hjust w geom_text() służy do przesuwania etykiety poziomo w prawo, tak aby nie zachodziła na punkt wykresu.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w ggplot2:

Jak zmienić rozmiar czcionki w ggplot2
Jak usunąć legendę w ggplot2
Jak obracać etykiety osi w ggplot2

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *