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