본문 바로가기
6. 데이터 시각화 - ggplot2/공통

[ggplot2] 화면 분할 그래프 for문 이용해서 그리기

by makhimh 2023. 1. 18.
반응형

ggplot2 와 gridExtra 패키지가 사용됩니다. 설치가 안되신 분들은 먼저 설치해주셔야 합니다. 화면 분할하는 방법을 먼저 읽고 오셔야 이해가 쉽습니다.

 

[ggplot2] 화면분할하는 방법 (tistory.com)

화면 분할 그래프를 for문을 이용해서 그려봅시다. 원리는 간단합니다. 리스트를 생성한 뒤, for문을 이용하여 ggplot 그래프를 list 의 각 원소에 입력합니다. do.call 함수로 grid.arrange 함수를 리스트의 모든 원소에 적용해줍니다. grid.arrange 함수는 ggplot 그래프를 변수로 입력받아 화면을 분할하여 그래프를 그려주는 함수입니다. 

예시는 아래와 같습니다. 설명은 주석으로 대신합니다. 

 

 

library(gridExtra)
library(ggplot2)

# 데이터 프레임 생성
x=c(1,2,3)
y1=c(3,3,3)
y2=c(4,4,4)
y3=c(5,5,5)
df=data.frame(x,y1,y2,y3)

#리스트 생성
ls= list()

#생성한 그래프를 리스트 원소로 입력
for(i in 1:3){
  ls[[i]]= ggplot()+
           geom_line(data=df,aes_string(x=df$x,y=names(df[i+1])))
}

#리스트에 grid.arrange 함수 적용
do.call(grid.arrange,ls)

 

만약 화면 분할 grid 개수를 설정하고 싶다면 do.call 함수 사용 시 아래와 같은 옵션을 입력하면 됩니다. nrow 는 행의 수를 설정하는 옵션입니다. 열의 수는 ncol 로 입력합니다. 

 

do.call(grid.arrange,c(l1,nrow=5))
반응형

댓글