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에서 관찰은 다음 두 가지 요구 사항 중 하나를 충족하는 경우 이상값으로 정의됩니다.

  • 관측치는 첫 번째 사분위수 아래의 사분위수 범위(Q1)의 1.5배입니다.
  • 관측치는 3사분위수(Q3) 위의 사분위간 범위의 1.5배입니다.

관측치가 이 두 가지 요구 사항 중 하나를 충족하는 경우 관측값을 이상값으로 표시하기 위해 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 점을 획득한 A팀 선수이고, 또 다른 이상치는 10.11 점을 득점한 B팀 선수입니다.

이러한 이상값에 레이블을 지정하기 위해 다른 변수를 사용할 수도 있습니다.

예를 들어 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가 있습니다. 이는 포인트에 대한 이상값이 있는 플레이어의 이름을 나타내기 때문입니다.

참고 : geom_text()hjust 인수는 레이블이 플롯 지점과 겹치지 않도록 레이블을 오른쪽으로 수평으로 밀어내는 데 사용됩니다.

추가 리소스

다음 튜토리얼에서는 ggplot2에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

ggplot2에서 글꼴 크기를 변경하는 방법
ggplot2에서 범례를 제거하는 방법
ggplot2에서 축 레이블을 회전하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다