R로 그래프를 그리다보면 제목, 축, 범례 등에 수식을 작성하여 표현하는 경우가 종종 있는데요. 그동안 그래프에 수식을 표현하기 위해서는 expression() 함수를 사용해야하는 것으로 알고 있었지만, 최근 유튜브 슬기로운 통계생활에서 굉장히 유용한 패키지를 알게 되었습니다.

바로 latex2exp라는 패키지이죠. 저는 논문이나 Rmarkdown을 작성하면서 수식을 표현할 때 LaTeX 구문을 자주 사용하는데요. 이 패키지는 LaTeX 구문을 사용하여 그래프에 수식을 작성할 수 있는 굉장히 유용한 패키지입니다.


사용방법

사용법은 굉장히 간단합니다. 우선 패키지를 load하고, TeX() 함수에 인자로 LaTeX 구문을 문자열 형식으로 넣어주면 되는데요.

library(latex2exp)

TeX("$x + y = z$")
## expression(`$x + y = z$` = paste("", "x", phantom() + phantom(), 
##     "y", phantom() == phantom(), "z", ""))

결과창을 보시면 다음과 같이 작성한 LaTeX 구문을 expression() 코드로 반환해주는 것을 알 수 있습니다. 사실 expression()LaTeX 구문과 비슷한 듯 하지만 또 다른 점이 많다보니 원하는 수식을 작성할 때마다 검색하여 찾아야했지만, latex2exp 패키지의 TeX() 함수를 이용하면 제가 익숙한 LaTeX 구문을 간단하게 expression() 코드로 변환해주는 역할을 하는 것입니다.

이젠 그래프에 수식을 넣어볼까요?

x <- seq(-1, 1, length.out = 10)
y <- exp(x)

plot(x, y, type = "l", main = TeX("y = $e^x$"))

그림과 같이 수식이 잘 들어가 있는 것을 확인할 수 있습니다.

한 가지 주의해야할 사항이 있다면, escape 문자를 사용하는 LaTeX 구문을 사용할 때에는 다음과 같이 에러가 발생하게 됩니다.

TeX("$\alpha + \beta = \gamma$")
## Error: '\g' is an unrecognized escape in character string starting ""$\alpha + \beta = \g"

따라서 이 때에는 backslash를 2번 사용하면 정상적으로 적용되며, 그래프에도 제대로 들어가게 됩니다.

TeX("$\\alpha + \\beta = \\gamma$")
## expression(`$\alpha + \beta = \gamma$` = paste("", "", alpha, 
##     , , , phantom() + phantom(), "", beta, , , , phantom() == 
##         phantom(), "", gamma, , , , ""))
plot(x, y, type = "l", main = TeX("$\\alpha + \\beta = \\gamma$"))