본문 바로가기
R

[R/R마크다운] ggplot 제목, 축 한글로 표시하기/showtext

by ssanalyst 2021. 1. 25.
728x90

안녕하세요.

 

R마크다운을 pdf로 변환하시는 분들이 많이 계십니다. 물론 저도 pdf로 변환을 주로 합니다.

 

하지만 이쁘게 하려고 하면 제한이 많아서 워드로 변환할까 고민중입니다.....(제 실력이 부족해서 그럴 수도 있습니다....)

 

이번 글에서는 역시 제가 작업하면서 겪은 문제에 대해 다루어보겠습니다.

 

저는 R마크다운에 ggplot 그래프를 넣었고 이를 pdf로 변환했습니다.

 

처음 작업은 노트북으로 진행했습니다.

 

그리고 새로 산 데스크탑으로 Rmd 파일을 옮겨서 작업을 진행했는데

 

노트북에서 작업할 때는 잘 나오던 ggplot 한글 타이틀이 데스크탑에서는 ' □□ □□ ' 이렇게 나왔습니다.

 

출처: 자체 제작

 

분명 extrafont 패키지로 사용하려는 글꼴도 불러왔고 ggplot 함수에 base_famliy로 글꼴체도 지정해줬는데 말입니다.

 

작업환경의 어떤 차이 때문인지 알지 못해 결국 구글에서 해결책을 찾아헤맸고 ggplot 타이틀을 한글로 출력하는데 성공했습니다.

 

그럼 이제부터 R마크다운(markdown) pdf ggplot 타이틀 한글 표시에 대해 알아보겠습니다.

 

먼저 제가 이 글에서 소개할 방법 이전에 활용할 수 있는 방법은 extrafont 패키지입니다.

 

extrafont 패키지를 사용하면 R에서도 컴퓨터에 설치된 폰트를 사용할 수 있습니다.

 

extrafont를 사용한 방법은 아래 제 글을 참고해주시기 바랍니다.

 

[R/R마크다운] 한글 폰트 적용하기 / extrafont

안녕하세요. R마크다운을 작성하시면서 좀 더 이쁜 문서를 위해 폰트를 다양하게 적용하길 원하실겁니다. 그래서 이번 포스팅에서는 R마크다운에 폰트를 적용하는 방법에 대하 알아보겠습니다.

funnystatistics.tistory.com

 

이 방법은 extrafont 패키지로도 안 되고 ggplot에서 base_family="NanumGothic" 으로 설정해도 마크다운에서 한글이 나오지 않을 때 사용할 수 있는 방법입니다.

 

위 문제 해결에 사용할 수 있는 패키지는 showtext 패키지입니다.

 

showtext는 font_addshowtext_auto 함수만으로 원하는 폰트를 사용할 수 있습니다.

 

그럼 나눔고딕체를 이용하여 사용방법에 대해 알려드리겠습니다.

 

우선 showtext 패키지를 설치하고 실행합니다.

install.packages('showtext')
library(showtext)

패키지 실행 후에 font_add를 이용하여 R에 글꼴을 추가합니다.

font_add("nanum", "NanumGothic.ttf")
showtext_auto()

ggplot(Dat, aes(x=theta)) +
  geom_histogram(breaks = seq(plot.min, Max, 1),  fill="#69b3a2", 
                 color="#e9ecef", alpha=0.9)+
  ggtitle("전체 점수")+
  xlab("수학점수")+
  ylab("인원 수")+
  scale_x_continuous(breaks=seq(plot.min, Max, bin))+
  theme_light(base_family="nanum")+
  theme(plot.title = element_text(face = "bold", 
                                  hjust = 0.5,
                                  size = 15))

위 코드 font_add 괄호 안의 첫 번째 인수인 "namum"은 사용자가 R에서 사용하려는 폰트에 지정해주는 이름입니다.

 

편하게 "nanum" 말고 "NN"이라 하셔도 무방합니다.

 

그리고 괄호 안에 "NanumGothic.ttf"는 사용하려는 폰트명입니다.

 

항상 사용하려는 폰트명은 뒤에 확장자인 .ttf 나 .otf 를 붙여주셔야 합니다.

 

추가적으로 extrafont나 다른 패키지는 .ttf만 지원하지만 showtext 패키지는 .otf 형식도 지원합니다.

 

font_add를 이용하여 사용하려는 폰트를 추가하셨다면 showtext_auto를 실행시켜 주시면 됩니다.

 

그리고 ggplot 함수 base_family에 font_add로 지정한 나눔고딕의 이름인 "nanum"을 넣어주시고 실행시키면 ggplot의 타이틀이 정상적으로 나옵니다.

 

출처: 자체 제작

여기까지 진행하시면 png 파일이나 이미지 파일은 한글이 잘 나오지만 R마크다운 pdf 에서는 안 나올 수가 있습니다.

 

그럴 때는 R마크다운의 R코드 청크에 아래와 같이 ' fig.showtext = T '를 입력해주시면 마크다운 pdf에서도 한글이 잘 나옵니다.

```{r fig.showtext=T}

```


컴퓨터에 설치되어 있는 폰트 이외에 인터넷 글꼴을 사용하고 싶으신 분들은 font_add_google을 통해 폰트 설치없이 인터넷에 있는 여러 글꼴을 사용하실 수 있습니다.

 

예시를 위해 구글 오픈 라이선스 폰트인 Sarina를 이용하여 ggplot 타이틀을 바꿔보겠습니다.

 

Sarina는 영문 폰트만 지원하여 타이틀을 '전체 점수'에서 'total score'로 수정했습니다.

 

font_add_google 함수를 사용할 때 주의할 점은 font_add와 반대로 사용하고 싶은 폰트명을 먼저 적어줘야 합니다.

 

그리고 .ttf 나 .otf 확장자를 입력하지 않아도 됩니다.

 

아래 코드를 보시면 폰트명인 "Sarina" 가 먼저 나오고 그 다음에 Sarina에 지정할 이름인 "sn"이 적혀있습니다.

font_add_google("Sarina", "sn")
showtext_auto()

ggplot(ScoredDat, aes(x=theta)) +
 geom_histogram(breaks = seq(plot.min, Max, 1),  fill="#69b3a2", 
                color="#e9ecef", alpha=0.9)+
  ggtitle("total score")+
  scale_x_continuous(breaks=seq(plot.min, Max, bin))+
  theme_light(base_family="sn")+
  theme(plot.title = element_text(face = "bold", 
                                  hjust = 0.5,
                                  size = 15))

위 코드를 실행하면 아래와 같은 플랏을 얻을 수 있습니다.

 

출처: 자체 제작

 

showtext 패키지를 사용하면 영어와 한글 뿐만 아니라 중국어와 한자도 사용할 수 있습니다.

 

showtext 패키지를 이용하여 원하는 그래프를 그리시기 바랍니다.

 

감사합니다 :)

 

구글 폰트 프로젝트: fonts.google.com/

참고자료: github.com/yixuan/showtext

 

728x90

댓글