글꼴 설정 :: Python 시각화 기초 - mindscale
Skip to content

글꼴 설정

matplotlib에서 글꼴을 설정하는 방법을 알아보겠습니다.

import matplotlib.pyplot as plt

matplotlib는 기본 글꼴이 영문 글꼴이어서, 한글을 그래프에 표기하려고 하면 경고(warning)가 뜨고, 그래프에는 라고 표시됩니다.

plt.text(0.3, 0.3, '한글', size=100)
Text(0.3, 0.3, '한글')
C:\Users\user\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py:211: RuntimeWarning: Glyph 54620 missing from current font.
  font.set_text(s, 0.0, flags=flags)
C:\Users\user\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py:211: RuntimeWarning: Glyph 44544 missing from current font.
  font.set_text(s, 0.0, flags=flags)
C:\Users\user\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py:180: RuntimeWarning: Glyph 54620 missing from current font.
  font.set_text(s, 0, flags=flags)
C:\Users\user\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py:180: RuntimeWarning: Glyph 44544 missing from current font.
  font.set_text(s, 0, flags=flags)

rc 함수를 이용해 글꼴 설정을 바꿀 수 있습니다. 아래는 윈도의 맑은 고딕(Malgun Gothic)으로 글꼴을 변경한 예입니다.

plt.rc('font', family='Malgun Gothic')

다시 그래프를 그리면 한글이 잘 표시됩니다.

plt.text(0.3, 0.3, '한글', size=100)
Text(0.3, 0.3, '한글')

그런데 보통 한글 글꼴에는 유니코드 마이너스()가 없고 일반 마이너스(-) 기호만 있습니다. 눈으로 보기에는 비슷해보이지만 다른 글자입니다. 따라서 유니코드 마이너스 기호를 쓰지 않도록 설정해줍니다.

plt.rc('axes', unicode_minus=False)

글꼴 이름 찾기

한글 글꼴의 이름을 정확히 모르는 경우에는 설치된 글꼴 이름을 찾아야 합니다. 먼저 font_manager를 임포트합니다.

from matplotlib import font_manager

네이버 나눔글꼴을 사용해보겠습니다. 나눔글꼴이 없다면 홈페이지에서 다운받아 설치합니다.

Colab을 사용하는 경우 다음 명령으로 설치합니다. 만약 설치 후에 글꼴이 인식되지 않는다면 메뉴에서 런타임 -> 런타임 다시 시작을 선택해 런타임을 재시작해주면 됩니다.

!apt install fonts-nanum

이름에 Nanum이 포함된 글꼴을 찾아보겠습니다.

for font in font_manager.fontManager.ttflist:
    if 'Nanum' in font.name:
        print(font.name, font.fname)
Nanum Pen Script C:\WINDOWS\Fonts\NanumPen.ttf
NanumMyeongjo C:\Windows\Fonts\NanumMyeongjoExtraBold.ttf
Nanum Brush Script C:\WINDOWS\Fonts\NanumBrush.ttf
NanumBarunGothic C:\Windows\Fonts\NanumBarunGothicLight.ttf
NanumMyeongjo C:\WINDOWS\Fonts\NanumMyeongjo.ttf

...

나눔명조(NanumMyeongjo)로 글꼴을 바꿉니다.

plt.rc('font', family='NanumMyeongjo')
plt.text(0.3, 0.3, '한글', size=100)
Text(0.3, 0.3, '한글')

특정 텍스트에만 글꼴 지정하기

특정한 텍스트만 다른 글꼴로 쓸 수도 있습니다.

plt.rc('font', family='Malgun Gothic')

FontProperties로 글꼴 파일을 읽어서, 글꼴을 쓸 때 fontproperties=에 읽어온 글꼴을 넣어주면 해당 글꼴로 텍스트를 그립니다.

mj = font_manager.FontProperties(fname='C:/WINDOWS/Fonts/NanumMyeongjo.ttf')
plt.text(0, 0.6, '명조체', fontproperties=mj, color='red', size=80)

gt = font_manager.FontProperties(fname='C:/WINDOWS/Fonts/NanumGothic.ttf')
plt.text(0, 0.1, '고딕체', fontproperties=gt, color='blue', size=80)
Text(0, 0.1, '고딕체')

fontproperties=text 함수만이 아니라 title, xlabel, ylabel 등 텍스트를 그리는 모든 함수에 쓸 수 있습니다.