본문 바로가기
R tidyverse/하루만에 끝내는 ggplot2

[ggplot2의 이해] 5. 박스플롯 (geom_boxplot)

by 만다린망고 2023. 2. 6.
반응형

1. 박스플롯 그리기

MASS 패키지에서 제공하는 데이터인 Car93을 이용하여 박스플롯을 그려보았습니다. 독립변수는 자동차의 Type 이고, 종속변수는 자동차의 가격 입니다. 그래프를 그려봅시다. 다양한 옵션들을 넣어보았는데 필요 없는 것은 제거하고 사용하시면 됩니다. 설명은 주석에 있습니다. 

library(MASS) #Car93 데이터가 들어 있음
library(tidyverse)

ggplot(data=Cars93,aes(x=Type,y=Price))+
  geom_boxplot(outlier.color='red')+
  labs(title="geom_boxplot",x='Type',y='Price')+ #제목, 축이름
  theme(title = element_text(size=20,face='bold'))+          #제목 서식
  theme(axis.title = element_text(size=10,face='bold'))+     #축서식
  theme(plot.title = element_text(hjust = 0.5))+              #제목 가운데 정렬
  stat_summary(fun.y="mean", geom="point", shape=23, size=3, fill="green")+ #평균 표시
  geom_jitter(shape=16,size=1, position=position_jitter(0.2)) #분포 추가

 

 

2. 박스플롯 그리기 (테두리색으로 구분)

독립변수에 따라 테두리색을 구분하기 위해 color=Type 옵션을 추가하였습니다. legend 는 출력할 필요가 없으므로, 그래프가 생성되는 코드들에 show.legend=FALSE 옵션을 추가했습니다. 

 

library(MASS) #Car93 데이터가 들어 있음
library(tidyverse)

ggplot(data=Cars93,aes(x=Type,y=Price,color=Type))+
  geom_boxplot(outlier.color='red',show.legend=FALSE)+
  labs(title="geom_boxplot",x='Type',y='Price')+ #제목, 축이름
  theme(title = element_text(size=20,face='bold'))+          #제목 서식
  theme(axis.title = element_text(size=10,face='bold'))+     #축서식
  theme(plot.title = element_text(hjust = 0.5))+              #제목 가운데 정렬
  stat_summary(fun.y="mean", geom="point", shape=23, size=3, fill="green",show.legend=FALSE)+ #평균 표시
  geom_jitter(shape=16,size=1, position=position_jitter(0.2),show.legend=FALSE) #분포 추가

 

 

3. 박스플롯 그리기 (채우기 색으로 구분)

독립변수에 따라 채우기 색으로 구분하기 위해 color=Type 옵션을 추가하였습니다. legend 는 출력할 필요가 없으므로, 그래프가 생성되는 코드들에 show.legend=FALSE 옵션을 추가했습니다. 

 

 

 

4. 독립변수 두종류를 한번에 반영하여 박스플롯 그리기

자동차의 Type과 AirBags 라는 두개의 독립변수를 이용하여 박스플롯을 그려봅시다. x=Type 은 그대로 두고, 원하는 스타일에 따라 fill=AirBags 또는 color=AirBags을 추가해주면 됩니다. 이 경우에는 legend 가 필요하므로 show.legend=FALSE를 전부 지워줍니다. 범례에 대한 옵션들도 추가했습니다. 분포와 평균은 지저분해서 제거했습니다. 

 

library(MASS) #Car93 데이터가 들어 있음
library(tidyverse)

ggplot(data=Cars93,aes(x=Type,y=Price,fill=AirBags))+
  geom_boxplot(outlier.color='red',)+
  labs(title="geom_boxplot",x='Type',y='Price')+ #제목, 축이름
  theme(title = element_text(size=20,face='bold'))+          #제목 서식
  theme(axis.title = element_text(size=10,face='bold'))+     #축서식
  theme(plot.title = element_text(hjust = 0.5))+              #제목 가운데 정렬
  theme(legend.title = element_text(size=10,face='bold'))+   #범례 제목 서식
  theme(legend.text = element_text(size=10))+                #범례 이름 서식
  theme(legend.position = c(0.9,0.9))                        #범례 위치

 

반응형

댓글