Hoe uitbijters in boxplots in ggplot2 te labelen


Deze tutorial biedt een stapsgewijs voorbeeld van hoe u uitbijters in boxplots in ggplot2 kunt labelen.

Stap 1: Maak het dataframe

Laten we eerst het volgende gegevensframe maken dat informatie bevat over de punten die zijn gescoord door 60 verschillende basketbalspelers in drie verschillende teams:

 #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

Opmerking : we hebben de functie set.seed() gebruikt om ervoor te zorgen dat dit voorbeeld reproduceerbaar is.

Stap 2: Definieer een functie om uitbijters te identificeren

In ggplot2 wordt een waarneming gedefinieerd als een uitbijter als deze aan een van de volgende twee vereisten voldoet:

  • De waarneming is 1,5 keer de interkwartielafstand onder het eerste kwartiel (Q1)
  • De waarneming is 1,5 keer de interkwartielafstand boven het derde kwartiel (Q3).

We kunnen de volgende functie in R maken om waarnemingen als uitbijters te bestempelen als ze aan een van deze twee vereisten voldoen:

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

Gerelateerd: Hoe de interkwartielafstand te interpreteren

Stap 3: Label uitschieters in boxplots in ggplot2

Vervolgens kunnen we de volgende code gebruiken om uitschieters in boxplots in ggplot2 te labelen:

 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 ) 

label uitschieters in boxplots in ggplot2

Merk op dat er in de grafiek twee uitschieters zijn gelabeld.

De eerste uitschieter is een speler van team A die 7,85 punten scoorde en de andere uitschieter is een speler van team B die 10,11 punten scoorde.

Merk op dat we ook een andere variabele kunnen gebruiken om deze uitschieters te labelen.

We kunnen bijvoorbeeld de punten van de speler in de mutete()- functie omwisselen om uitschieters te labelen op basis van de naam van de speler:

 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 ) 

De uitbijter van team A heeft nu een label N en de uitbijter van team B heeft nu een label D , omdat deze de namen vertegenwoordigen van spelers die uitschieters hebben voor punten.

Opmerking : het hjust- argument in geom_text() wordt gebruikt om het label horizontaal naar rechts te duwen, zodat het het plotpunt niet overlapt.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in ggplot2 kunt uitvoeren:

Hoe de lettergrootte in ggplot2 te veranderen
Hoe een legenda in ggplot2 te verwijderen
Hoe aslabels te roteren in ggplot2

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert