Как пометить выбросы на коробчатых диаграммах в ggplot2


В этом руководстве представлен пошаговый пример того, как маркировать выбросы на коробчатых диаграммах в ggplot2.

Шаг 1. Создайте фрейм данных

Во-первых, давайте создадим следующий кадр данных, содержащий информацию об очках, набранных 60 разными баскетболистами в трех разных командах:

 #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

Примечание . Мы использовали функцию set.seed() , чтобы обеспечить воспроизводимость этого примера.

Шаг 2. Определите функцию для выявления выбросов

В ggplot2 наблюдение определяется как выброс, если оно соответствует одному из следующих двух требований:

  • Наблюдение в 1,5 раза превышает межквартильный размах ниже первого квартиля (Q1).
  • Наблюдение в 1,5 раза превышает межквартильный размах выше третьего квартиля (Q3).

Мы можем создать в R следующую функцию, чтобы помечать наблюдения как выбросы, если они соответствуют одному из этих двух требований:

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

Связанный: Как интерпретировать межквартильный размах

Шаг 3. Пометьте выбросы на коробчатых диаграммах в ggplot2.

Затем мы можем использовать следующий код для маркировки выбросов на коробчатых диаграммах в 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 ) 

пометить выбросы на коробчатых диаграммах в ggplot2

Обратите внимание, что на графике отмечены два выброса.

Первый выброс — это игрок команды А, набравший 7,85 очка, а второй выброс — игрок команды Б, набравший 10,11 очка.

Обратите внимание, что мы также могли бы использовать другую переменную для обозначения этих выбросов.

Например, мы могли бы поменять местами точки игрока в функции mutate() , чтобы пометить выбросы на основе имени игрока:

 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 ) 

Выброс команды A теперь имеет метку N , а выброс команды B теперь имеет метку D , поскольку они представляют имена игроков, у которых есть выбросы по очкам.

Примечание . Аргумент hjust в geom_text() используется для перемещения метки по горизонтали вправо, чтобы она не перекрывала точку графика.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в ggplot2:

Как изменить размер шрифта в ggplot2
Как удалить легенду в ggplot2
Как повернуть метки осей в ggplot2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *