R에서 boxplot()를 만드는 방법 BoxRStudio의 플롯 [예제]
R의 boxplot()
R의 boxplot() 사분위수별 데이터 분포를 시각화하고 이상치의 존재를 감지하는 데 도움이 됩니다. ggplot2 라이브러리의 기하학적 객체 geom_boxplot()을 사용하여 R에서 boxplot()을 그릴 수 있습니다.
우리는 ggplot을 사용하여 R에서 boxplot()을 소개하기 위해 airquality 데이터 세트를 사용할 것입니다. 이 데이터 세트는 1973년 154월부터 XNUMX월까지 뉴욕의 공기 질을 측정합니다. 이 데이터 세트에는 XNUMX개의 관측치가 포함되어 있습니다. 우리는 다음 변수를 사용할 것입니다.
- 오존: 수치변수
- 바람: 수치변수
- 월: XNUMX월부터 XNUMX월까지. 수치변수
만들기 Box 음모
R에서 첫 번째 boxplot()을 만들기 전에 다음과 같이 데이터를 조작해야 합니다.
- 1단계: 데이터 가져오기
- 2단계: 불필요한 변수 삭제
- 3단계: 요인 수준에서 월 변환
- 4단계: 월을 시작, 중간, 끝의 세 가지 수준으로 나누는 새로운 범주형 변수를 만듭니다.
- 5단계: 누락된 관측값 제거
이러한 모든 단계는 dplyr과 파이프라인 연산자 %>%를 사용하여 수행됩니다.
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"))))
좋은 방법은 looking() 함수를 사용하여 데이터의 구조를 확인하는 것입니다.
glimpse(data_air)
출력:
## 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...
데이터 세트에 NA가 있습니다. 제거하는 것이 현명합니다.
# Step 5 data_air_nona <-data_air %>% na.omit()
기본 상자 그림
기본적인 R boxplot() 함수를 사용해 월별 오존 분포를 그래프로 표시해 보겠습니다.
# Store the graph box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone)) # Add the geometric object box plot box_plot + geom_boxplot()
코드 설명
- 나중에 사용할 수 있도록 그래프를 저장하세요.
- box_plot: 그래프를 변수 box_plot에 저장합니다. 이는 추가 사용에 유용하거나 너무 복잡한 코드 줄을 피하는 데 도움이 됩니다.
- R boxplot()의 기하학적 객체를 추가합니다.
- ggplot boxplot에 data_air_nona 데이터 세트를 전달합니다.
- aes() 인수 내에 x축과 y축을 추가합니다.
- + 기호는 R이 코드를 계속 읽기를 원한다는 것을 의미합니다. 코드를 쪼개서 더 읽기 쉽게 만듭니다.
- geom_boxplot()를 사용하여 상자 그림을 만듭니다.
출력:
그래프의 측면 변경
그래프의 측면을 뒤집을 수 있습니다.
box_plot + geom_boxplot()+ coord_flip()
코드 설명
- box_plot: 저장한 그래프를 사용합니다. 그래프에 새 정보를 추가할 때마다 모든 코드를 다시 쓸 필요가 없습니다.
- geom_boxplot(): R에서 boxplots() 생성
- coord_flip(): 그래프의 측면을 뒤집습니다.
출력:
이상치 색상 변경
이상치의 색상, 모양 및 크기를 변경할 수 있습니다.
box_plot + geom_boxplot(outlier.colour = "red", outlier.shape = 2, outlier.size = 3) + theme_classic()
코드 설명
- outlier.colour=”red”: 이상치의 색상을 제어합니다.
- outlier.shape=2: 이상치의 모양을 변경합니다. 2는 삼각형을 가리킨다.
- outlier.size=3: 삼각형의 크기를 변경합니다. 크기는 숫자에 비례합니다.
출력:
요약 통계 추가
R boxplot()에 요약 통계를 추가할 수 있습니다.
box_plot + geom_boxplot() + stat_summary(fun.y = mean, geom = "point", size = 3, color = "steelblue") + theme_classic()
코드 설명
- stat_summary()를 사용하면 수평 상자 그림 R에 요약을 추가할 수 있습니다.
- fun.y 인수는 반환되는 통계를 제어합니다. 당신은 의미를 사용합니다
- 참고: 최소 및 최대와 같은 다른 통계도 사용할 수 있습니다. 동일한 그래프에 두 개 이상의 통계가 표시될 수 있습니다.
- geom = “point”: 점으로 평균을 표시합니다.
- size=3: 포인트의 크기
- color =”steelblue”: 포인트 색상
출력:
Box 점으로 플롯
다음 수평 상자 그림 R에서 점 그림 레이어를 추가합니다. 각 점은 관찰을 나타냅니다.
box_plot + geom_boxplot() + geom_dotplot(binaxis = 'y', dotsize = 1, stackdir = 'center') + theme_classic()
코드 설명
- geom_dotplot()을 사용하면 빈 너비에 점을 추가할 수 있습니다.
- binaxis='y': y축을 따라 점의 위치를 변경합니다. 기본적으로 x축
- dotsize=1: 점의 크기
- stackdir='center': 점을 쌓는 방법: 네 가지 값:
- "위로"(기본값),
- "아래에"
- "센터"
- “중앙 전체”
출력:
제어 미학 Box 음모
상자의 색상을 변경합니다
그룹의 색상을 변경할 수 있습니다.
ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) + geom_boxplot() + theme_classic()
코드 설명
- 그룹의 색상은 aes() 매핑에서 제어됩니다. color= Month를 사용하면 상자에 따라 색상과 수염 그림의 색상을 변경할 수 있습니다.
출력:
Box 여러 그룹으로 플롯
여러 그룹을 추가하는 것도 가능합니다. 측정일에 따른 공기질의 차이를 시각화할 수 있습니다.
ggplot(data_air_nona, aes(Month, Ozone)) + geom_boxplot(aes(fill = day_cat)) + theme_classic()
코드 설명
- 기하학적 객체의 aes() 매핑은 표시할 그룹을 제어합니다(이 변수는 요인이어야 함)
- aes(fill= day_cat)를 사용하면 x축에 각 달에 대한 세 개의 상자를 만들 수 있습니다.
출력:
Box 지터링된 점이 있는 플롯
점을 보여주는 또 다른 방법은 지터링된 점입니다. R 변수의 범주형 데이터에 대한 박스 플롯으로 점을 시각화하는 편리한 방법입니다.
이 방법은 개별 데이터의 중복을 방지합니다.
box_plot + geom_boxplot() + geom_jitter(shape = 15, color = "steelblue", position = position_jitter(width = 0.21)) + theme_classic()
코드 설명
- geom_jitter()는 각 점에 약간의 감쇠를 추가합니다.
- shape=15는 점의 모양을 변경합니다. 15는 정사각형을 나타냅니다.
- color = “steelblue”: 포인트의 색상을 변경합니다.
- position=position_jitter(width = 0.21): 겹치는 점을 배치하는 방법입니다. position_jitter(width = 0.21)은 점을 x축에서 20% 이동한다는 의미입니다. 기본적으로는 40%입니다.
출력:
지터 방식을 적용한 첫 번째 그래프와 포인트 방식을 적용한 두 번째 그래프의 차이점을 확인할 수 있습니다.
box_plot + geom_boxplot() + geom_point(shape = 5, color = "steelblue") + theme_classic()
노치 Box 음모
geom_boxplot()의 흥미로운 기능은 R의 노치 박스 플롯 함수입니다. 노치 플롯은 중앙값 주위로 상자를 좁힙니다. 노치 박스 플롯의 주요 목적은 그룹 간 중앙값의 유의성을 비교하는 것입니다. 노치가 겹치지 않을 때 두 그룹의 중앙값이 다르다는 강력한 증거가 있습니다. 노치는 다음과 같이 계산됩니다.
with는 사분위수와 관측치 수입니다.
box_plot + geom_boxplot(notch = TRUE) + theme_classic()
코드 설명
- geom_boxplot(notch=TRUE): 노치 수평 상자 그림 생성 R
출력:
요약
아래 표에서는 다양한 유형의 수평 상자 그림 R을 요약할 수 있습니다.
목표 | 암호 |
---|---|
기본 상자 그림 |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() |
측면을 뒤집다 |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip() |
노치 박스 플롯 |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE) |
Box 지터된 점이 있는 플롯 |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21)) |
또한 확인:- 초보자를 위한 R 튜토리얼: R 프로그래밍 언어 배우기