본문 바로가기
SW 프로그래밍/파이썬

Matplotlib에서 한글 사용

by N2info 2020. 9. 27.

한글폰트 사용

Matplotlib에서 한글을 사용하려면 다음과 같이 한글 폰트를 적용해야 한다. 당연히 해당 폰트는 컴퓨터에 깔려 있어야 한다. 여기에서는 나눔고딕 폰트를 사용하였다. 나눔고딕 폰트 설치법은 다음과 같다.

$ sudo apt-get install -y fonts-nanum* $ sudo fc-cache -fv $ rm ~/.cache/matplotlib -rf

폰트를 설치한 후에는 다음 명령으로 원하는 폰트가 설치되어 있는지 확인한다.

>>> set(sorted([f.name for f in mpl.font_manager.fontManager.ttflist])) ...(생략)... u'Nanum Brush Script', u'Nanum Brush Script OTF', u'Nanum Pen Script', u'Nanum Pen Script OTF', u'NanumBarunGothic', u'NanumBarunGothicOTF', u'NanumBarunpen', u'NanumGothic', u'NanumGothicCoding', u'NanumGothicOTF', u'NanumMyeongjo', u'NanumMyeongjoOTF', u'NanumSquare', ...(생략)...

설치된 폰트를 사용하는 방법은 크게 두가지 이다.

  • rc parameter 설정으로 이후의 그림 전체에 적용
  • 인수를 사용하여 개별 텍스트 관련 명령에만 적용

한글 문자열은 항상 유니코드를 사용해야 한다.

우선 rc parameter를 설정하여 이후의 그림 전체에 적용해 보자

In [4]:

# 폰트 설정 mpl.rc('font', family='NanumGothic') # 유니코드에서 음수 부호설정 mpl.rc('axes', unicode_minus=False)

정상적으로 폰트가 설치되고 rc parameter가 제대로 설정되었다면 다음 코드를 실행하였을 때 한글이 잘 보여야 한다.

In [5]:

plt.title('한글 제목') plt.plot([10, 20, 30, 40], [1, 4, 9, 16]) plt.xlabel("엑스축 라벨") plt.ylabel("와이축 라벨") plt.show()

만약 객체마다 별도의 폰트를 적용하고 싶을 때는 다음과 같이 폰트 패밀리, 색상, 크기를 정하여 플롯 명령의 fontdict 인수에 넣는다.

In [6]:

font1 = {'family': 'NanumMyeongjo', 'size': 24, 'color': 'black'} font2 = {'family': 'NanumBarunpen', 'size': 18, 'weight': 'bold', 'color': 'darkred'} font3 = {'family': 'NanumBarunGothic', 'size': 12, 'weight': 'light', 'color': 'blue'} plt.plot([10, 20, 30, 40], [1, 4, 9, 16]) plt.title('한글 제목', fontdict=font1) plt.xlabel('엑스 축', fontdict=font2) plt.ylabel('와이 축', fontdict=font3) plt.show()