R 함수로 도표를 그릴 때 종종 또는 자주 쓰이는 함수가 par()이다. par()의 활용을 통해 다양한 ploting 이 가능한데 예를 들자면 다음과 같은 도표도 한번에 그릴 수가 있다.

도표를 편집하여 다른 그래픽 툴을 이용하면 물론 동일한 형태의 plot도 그릴 수 있지만 알아놓아서 나쁠 것도 없고 필자는 나름 재미도 느끼고 있기 때문에 조금 정리를 하고자한다. 이 함수를 알게 된건 필자의 학과에서 시계열 관련 ploting 작업을 하던 후배를 보고 흥미가 생겨서 코드를 뒤적거리게 됐다.
- Par() 함수의 fig옵션
fig=c(x1,x2,y1,y2)
fig옵션은 위에서 보는 바와 같이 4가지 변수가 필요한데 각 변수는 0,1 사이의 값을 가지며 이는 다음에 나올 ploting 함수들이 그려지게될 범위를 나타낸다. 무슨 말인고 하니 만약 ploting 구역이 4등분되었을 때(par(mfrow=c(2,2)) fig=c(0,0.3,0.5,1)라고 정의를 하게 되면 plot이 아래 그림에서 노란색 부분에 위치하게 된다. 앞서 말한것 처럼 fig 옵션을 활용하기 위해서는 mfrow 옵션을 통해서 ploting 구역이 구분이 되어있어야 한다.

fig옵션을 활용하여 그려진 그림은 다음과 같다.

예제 1
par(mfrow=c(2,2), mar=c(3,3,3,3))
par(fig=c(0,1,0.5,1))
plot(1:20, rnorm(20,0,1)*(1:20)*3, type="l")
par(fig=c(0,0.5,0,0.5),new=T)
boxplot(rnorm(100,0,1))
par(fig=c(0.5,1,0,0.5),new=T)
plot(rnorm(1000,0,1), rnorm(1000,0,1))
예제 2(본 예제의 경우 mapdata, maps 라는 패키지의 설치를 요구한다.)
library(mapdata)
library(maps)
clr<-rainbow(20)
par(mar=c(3,0,0,0))
par(fig=c(0,1,0.2,1))
map('worldHires',xlim=c(121,133),ylim=c(32.9296,43))
title("...............")
map.axes()
abline(v=122:132, h=33:43, col="gray", lty=2)
par(mar=c(1,1,1,1))
par(fig=c(0,1,0,1),new=T)
plot(1:21,type="n",main="",xlab="",ylab="", axes=FALSE)
text.col <- paste(1:20,"")
for(i in 1:20){
rect(i,1,i+1,3,col=clr[i])
text(i+0.5,0.5,labels=text.col[i])
}



덧글
gingerale 2009/12/01 00:59 # 삭제 답글
저... 죄송하고 반가운데요...R에서 그림그리고 나서 저장하는 방법과 플롯하다가 삑사리 났을 때 한 단계만 취소하는 방법 좀 가르쳐주세요.ㅠ 전 아무리 찾아도 못 찾아서 번번이 교수님과의 미팅 때는 스크린샷;으로 가지고 가고 삑사리나면 처음부터 다시 그려요...흑흑