글꼴 설정
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
등 텍스트를 그리는 모든 함수에 쓸 수 있습니다.