Ubuntu에서 Matplotlib 한글 폰트 설정

안적어두니 매번 까먹는다.
방법만 알면 간단하지만, 방법을 조금이라도 까먹으면 바로 삽질을 하게된다.

Ubuntu 환경에서 나눔 폰트를 사용한다는 가정하에 다음의 방법을 따르면 된다.

  • 나눔 폰트 설치
  • 폰트 캐시 삭제
  • 폰트 배포
  • Matplotlib 폰트 캐시 삭제
  • 폰트 적용

복잡해보이지만 따라하는데 5분도 안걸린다.

나눔 폰트 설치

$ sudo apt-get install fonts-nanum*

폰트 캐시 삭제

$ fc-cache -fv

폰트 배포

자신의 matplotlib 설정 디렉터리가 어디있는지 먼저 확인해야 한다.
파이썬에서 아래의 키워드로 확인할 수 있다.

>>> import matplotlib
>>> matplotlib.__file__
'/usr/anaconda3/lib/python3.7/site-packages/matplotlib/__init__.py'

필자의 경우 Anaconda를 사용하고 있기 때문의 위처럼 경로가 설정되어있다.
트루 글꼴(ttf)을 기준으로 font 디렉터리는 위의 matplotlib 디렉터리에서 mpl-data/fonts/ttf에 위치한다.

이제 설치된 폰트를 matplotlib의 폰트 디렉터리로 옮겨주자.
이 때, 설치 경로는 환경에 따라 다르니 위의 과정을 통해 본인의 환경을 먼저 확인한 후 배포해야 한다.

$ cp /usr/share/fonts/truetype/nanum/Nanum* /usr/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/

Matplotlib 폰트 캐시 삭제

Matplotlib의 폰트 캐시를 삭제해준다.

$ rm -rf ~/.cache/matplotlib/*

폰트 적용

파이썬 혹은 주피터를 재실행하면 폰트가 로드된다.
다음의 명령어로 폰트가 설치되었는지 확인할 수 있다.

>>> import matplotlib.font_manager
>>> [f.fname for f in matplotlib.font_manager.fontManager.ttflist]
[ '/usr/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/NanumSquareEB.ttf',
 '/usr/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/NanumSquareRoundB.ttf',
(이하 생략)

폰트 이름은 다음과 같이 확인할 수 있다.

>>> import matplotlib.font_manager
>>> font_list = matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
>>> [matplotlib.font_manager.FontProperties(fname=font).get_name() for font in font_list]
['Nanum Brush Script',
 'NanumBarunGothic',
 'NanumSquareRound',
(이하 생략)

폰트의 적용 방법은 다양하다. [참고1], [참고2]
필자는 단순하게 전역에서 폰트를 설정하였다.
font.family에 위의 폰트 이름을 지정해주면 된다.

>>> plt.rcParams["font.family"] = 'NanumGothicCoding'

참고로 마이너스 폰트가 깨지는 경우가 발생하면 되는데, 그 경우 아래와 같이 전역설정을 바꿔주면 된다.

import matplotlib as mpl
mpl.rcParams['axes.unicode_minus'] = False

댓글 남기기