Rstudio Cloud의 그래프에서 한글폰트의 출력

Rstudio Cloud는 굉장한 서비스이지만 한국인으로서 한글사용에 제약이 있는 점은 큰 불만입니다. 예를 들어 base plot이나 ggplot에서 그래프를 그릴때 한글로 된 라벨을 붙이면 Viwer에는 한글이 깨져서 출력1이 됩니다. 이 문제는 Rstudio Cloud에 적절한 한글 글꼴이 설치되어 있지 않고 X11을 지원하지 않기 때문에 발생한다고 합니다. 해당문제의 해결책은 미완성의 신이라는 국내 블로그와 한국 R 스터디 그룹의 내용을 참고했습니다.

Rstudio Cloud에서 한글 글꼴 설치

Rstudio Cloud는 리눅스 기반의 R을 제공하지만 사용자에게 관리자 권한을 제공하지 않기 때문에 root 디렉토리에 글꼴을 설치할 수 없습니다. 그래서 home 디렉토리에 .fonts 폴더를 생성한 후, 그곳에 글꼴을 설치하고 R에서 인식할 수 있도록 해줘야 합니다.

먼저 Rstudio의 콘솔창 옆에 터미널 창을 실행시킵니다. 평소 git에 푸시할 때 빼고는 Rstudio에서 터미널을 이용하는 경우는 거의 없는데 여기서 사용하니 신기합니다.

터미널 창에 다음의 코드를 실행시켜 .fonts 디렉토리를 만들고 나눔글꼴을 설치합니다.

$ mkdir ~/.fonts  # '~/.fonts' 디렉토리 생성
$ cd ~/.fonts     # '~/.fonts' 디렉토리 이동
$ wget http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip
  # 나눔글꼴(zip파일) 내려받기
$ unzip NanumFont_TTF_ALL.zip -d NanumFont  # zip파일 해제
$ rm -f NanumFont_TTF_ALL.zip  # 내려받은 zip파일 제거

여기까지 Rstudio Cloud에서 한글 글꼴을 설치하는 작업은 끝났습니다. 이제 R에 글꼴이 설치된 경로를 등록하여 R이 글꼴을 인식할 수 있도록 해야 합니다. 앞에서는 터미널에서 작업했지만 이젠 우리가 자주 사용하는 콘솔창으로 이동하여 다음의 코드를 실행시킵니다.

# install.packages("sysfonts")
library(sysfonts)
font_add("NanumGothicBold", "~/.fonts/NanumFont/NanumGothicBold.ttf")
font_add("NanumGothic", "~/.fonts/NanumFont/NanumGothic.ttf")

저는 앞으로 고딕체만 쓸 예정이므로 NanumGothicBold, NanumGothic 폰트만 추가했습니다.

이제 마무리 되었습니다. 그러나 여기까지 작업만으로는 Rstudio Cloud의 그래프에서 한글글꼴이 제대로 출력되지 않습니다. 한국 R스터디 그룹에서는 rmd chunkfig.showtext 옵션을 추가하는 방법, 그래프를 html로 렌더링한 결과를 보여주는 방법, svgPanZoomsvglite 패키지를 이용하여 기본 plot pane으로 보내는 방법 세가지 방안을 제안2하고 있습니다.

한글 글꼴 출력 방법

rmd chunkfig.showtext 옵션 추가

최근 rmd 파일을 자주 사용하는 저로서는 정말 반가운 팁이 아닐 수 없습니다.

# install.packages("showtext")
library(showtext)
showtext_auto()
plot(1:10, main="이것은 테스트입니다.", xlab = "X축", ylab = "Y축")

정상적으로 잘 작동합니다.

그래프를 html로 렌더링하여 출력

plotly 패키지는 인터랙티브 시각화 패키지로 이를 이용하면 ggplot으로 구현된 그래프를 html로 렌더링하여 출력할 수 있습니다.

한국 R스터디 그룹에는 ggplot으로 그린 그래프를 plotly로 감싸야만 한글이 제대로 출력이 된다고 나왔는데 직접 해보니 ggplot 만으로도 제대로된 그래프가 출력됩니다. 이 부분은 좀 더 살펴봐야 할 듯 합니다.

# install.packages("ggplot2")
# install.packages("plotly")
library(ggplot2)
library(plotly)

ggplot(mtcars, aes(x=wt, y=mpg)) +
  geom_point() + geom_smooth() +
  ggtitle("이것은 테스트입니다.")

library(dplyr)
{ggplot(mtcars, aes(x=wt, y=mpg)) +
  geom_point() + geom_smooth() +
  ggtitle("이것은 테스트입니다.")} %>% ggplotly()

svgPanZoomsvglite 패키지 이용

# install.packages("svgPanZoom")
# install.packages("svglite")

library(svgPanZoom)
library(svglite)

showtext_auto()
svgPanZoom(
  svglite:::inlineSVG(
   plot(1:10, main="이것은 테스트입니다.", xlab = "X축", ylab = "Y축") 
  )
)

  1. 그래프 외에도 rmd를 pdf 파일로 변환할 때 문서 내부에 한글이 있으면 컴파일이 중단되는 문제가 있습니다. 이 부분에 대한 해결책은 아직 찾지 못했습니다. Latex 설정을 어떻게 하면 된다고 하는데 말이죠…↩︎

  2. 샤이니 서버에 ‘~/.Renviron’ 생성 후, ‘LANG=en_US.UTF-8’ 옵션을 추가하는 방안도 제시되었으나 샤이니는 제가 모르는 방법이라 본 쓰레드에서는 제외하였습니다. 관심이 있으신 분은 한국 R스터디 그룹을 참고하시길 바랍니다.↩︎

Previous