예를 들어 1부터 10까지 1씩 증가하는 데이터를 생성한 뒤 이 값을 제곱하여 그리는 코드와 그림은 아래와 같습니다. y축 lab이 잘 안보여서 cex.lab로 크기를 크게 했는데 그림의 마진이 작아 잘려버려서 par(mar=c(아래 축 마진, 왼쪽 축 마진, 위 축 마진, 오른쪽 축 마진))으로 마진을 조정했습니다. 값을 늘리면 마진이 커져 그림이 작아집니다.
x<-1:10
par(mar = c(5, 5, 5, 5))
plot(x,x^2,type="l",ylab=expression(x^2),cex.lab=2)
![]() |
<마진에 대한 이해를 돕기위한 그림> |
한 개만 그릴 때는 상관은 없지만 여러개의 그림을 경우 문제가 발생합니다. for 문을 이용해 5차까지 계산하고 y축 label을 expression(x^i)로 하여 x의 1차, x의 2차, ... , x의 5차로 표현하려고 하면 모든 그림의 y축 label은 x의 i차로 출력이 되버립니다.
for(i in c(1:5)){
plot(x,x^i,type="l",ylab=expression(x^i),cex.lab=2)
}
각각의 그림마다 다르게 출력하고 싶다면 expression 함수가 아닌 bquote 함수를 이용해야 합니다. ylab=bquote(x^.(i))로 바꾸면 우리가 원하는 결과를 얻을 수 있습니다. 수식을 그대로 쓰돼 i부분을 ( )로 감싼뒤 앞에 .을 넣으면 for 문의 i를 이용하게 됩니다.
for(i in c(1:5)){
plot(x,x^i,type="l",ylab=bquote(x^.(i)),cex.lab=2)
}
아래 첨자도 마찬가지로 위의 방법을 이용하시면 됩니다. 나중에 여러개의 수식이 이용된 그림을 그릴 때 이용하면 시간절약에 많은 도움이 됩니다.
※ 참고문헌
http://r.789695.n4.nabble.com/use-expression-in-a-loop-td856907.html
https://bookdown.org/ndphillips/YaRrr/plot-margins.html
0 개의 댓글:
댓글 쓰기