분석 환경
Google Colab pro의 구성환경
- Python Version : 3.7.10
상황
plotnine
모듈의 ggplot
을 출력할 때 한글이 깨져서 나오는 경우임.
한글이 제대로 출력되게끔 하고 싶은 상황.
- 예시
위에 보이는 그래프와 같이 한글이 네모 박스 형태로 깨져서 출력됨을 확인할 수 있다.
마치 matplotlib
모듈의 pyplot
으로 그래프를 그렸을 때 한글이 깨지는 형태와 매우 비슷했다.
시행착오
형태가 matplotlib
모듈에서 한글이 깨지는 형태와 비슷하다고 생각하여 matplotlib
한글 폰트 깨짐 현상 해결을 위한 코드를 실행 후 다시 출력해보았다. 하지만 한글이 네모 박스로 출력되는 상황은 여전했다.
Plotnine 모듈의 ggplot 에서 한글 폰트가 깨져서 출력될 때 해결 방안
다양한 방법을 고민해본 끝에 해결 방안을 찾을 수 있었다.
1. 기존 matplotlib 에서 한글을 정상 출력하는 코드 실행
우선은 기존 matplotlib
에서 한글을 정상 출력하는 코드를 실행해준다. 먼저 사용하고자 하는 한글 폰트를 다운로드하고 rc()
메소드를 사용하여 사용하고자 하는 폰트를 정해준다. 여기서는 나눔 바른 고딕체를 사용해보았다.
(분석 환경이 Colab Pro 의 환경이라 로컬 환경과는 다소 다를 수 있음)
# 한글폰트 사용 in colab
%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
!apt-get update -qq
!apt-get install fonts-nanum* -qq
path = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
font_name = fm.FontProperties(fname=path, size=10).get_name()
print(font_name)
plt.rc('font', family=font_name)
fm._rebuild()
mpl.rcParams['axes.unicode_minus'] = False
위의 코드를 한번 [실행]하고 [런타임 다시 시작]을 거친 후 위의 코드를 다시 한번 더 [실행]해주면 세팅이 완료된다.
2. 폰트 객체를 정의하는 코드 추가
위의 matplotlib
의 한글 정상 출력 코드 실행을 완료한 후에 폰트 객체를 정의해주는 코드를 추가해준다.
...
font = fm.FontProperties(fname=path, size=9)
...
해당 객체는 이후 ggplot
의 폰트를 설정하는 데 사용된다.
3. theme 함수를 추가하여 ggplot 에 한글 폰트 설정해주기
이제 ggplot
에서 theme()
함수를 추가하여 위에서 생성한 폰트를 설정해주면 한글이 정상 출력되는 것을 확인했다.
from plotnine import *
# 기존의 ggplot 문법에 폰트 설정해주는 theme 함수 추가
ggplot(data=...) + ... + theme(text=element_text(fontproperties=font))
- 한글 정상 출력 예시
위와 같은 과정을 거치고 나면 plotnine
모듈의 ggplot
에서 한글이 정상 출력되는 것을 확인할 수 있을 것이다.
결론
이번 글에서는 ggplot
에서 한글 출력을 정상화시키는 방법에 대해서 알아보았다. 현재 구글과 같은 검색 포털에서 plotnine
모듈의 ggplot
한글 깨짐 현상에 대하여 많은 검색을 해보아도 아직 그에 대한 글들이 많이 없다는 것을 확인하였다. 생각보다 간단한 방법이지만 모르는 상황에서는 많은 시행착오를 거쳐야 할 수도 있다. 그래서 본인 역시 헤매는 시간이 있었지만 이 글을 읽는 분들께서는 부디 시행착오를 줄이실 수 있게끔 나의 시행착오가 큰 도움이 되었으면 좋겠다.