R 에서 로그로그 스케일 그림 그리는 법

R 에서 로그로그 스케일 그림 그리는 법

How to plot loglog scale graph

좋지 않은 방법

win.graph(7,4); par(mfrow=c(1,2))
plot(pressure,main='Pressure\')
y<-pressure[-1,]$pressure; logtemp<-log(y)
x<-pressure[-1,]$temperature; logpress<-log(x)
plot(logpress,logtemp,main='log scale\')

1.png 로그로그 스케일로 그림을 그리는 가장 쉬운 방법은 데이터 자체에 로그를 취하는 것이다. 만약 로그로그 플랏을 처음 그려본다면 이 방법은 반드시 숙지하는 편이 좋다. 이 방법은 R 이든 어떤 언어든 먹히기 때문에 급한대로 써먹을 수 있기 때문이다. 물론 이 방법은 머리가 편한만큼 손이 다소 수고스럽다.

win.graph(5,5)
plot(pressure,main='Pressure\',log="xy")

권장되는 방법

2.png R 자체함수인 plot()만을 사용해서 로그로그 그림을 그리려면 log="xy" 옵션을 사용하면 된다. "x", "y", "xy" 세 가지 옵션 중에 하나를 선택할 수 있으며, 입력된 축에 알아서 로그를 취해준다. 그런데 이 방법은 두 변수사이의 관계, 추이를 파악하는데는 충분하지만 별로 보기 좋지는 않다. 이를 극복하기 위해 sfsmisc 패키지의 eaxis() 함수를 사용한다.

install.packages("sfsmisc")
library(sfsmisc)
 
win.graph(5,5)
plot(pressure,main='Pressure\',log="xy",xaxt='n',yaxt='n')
eaxis(1,at=10^(-4:4))
eaxis(2,at=10^(-4:4))

3.png eaxis() 함수는 말그대로 exponetial axis를 의미한다. 꼭 $10^{k}$ 만 넣어줄 필요는 없으며, 필요하다면 원하는 지점의 값을 넣어줘도 얼마든지 맞춰준다. 단, eaxis()를 사용하기 전에 plot()xaxt="n"yaxt="n"를 넣어줘서 원래의 눈금을 모두 제거해주어야 깔끔하게 원하던 그림이 된다.

install.packages("sfsmisc")
library(sfsmisc)
 
win.graph(7,4); par(mfrow=c(1,2))
plot(pressure,main='Pressure\')
y<-pressure[-1,]$pressure; logtemp<-log(y)
x<-pressure[-1,]$temperature; logpress<-log(x)
plot(logpress,logtemp,main='log scale\')
 
win.graph(5,5)
plot(pressure,main='Pressure\',log="xy")
 
win.graph(5,5)
plot(pressure,main='Pressure\',log="xy",xaxt='n',yaxt='n')
eaxis(1,at=10^(-4:4))
eaxis(2,at=10^(-4:4))
댓글