Matplotlib 한글 폰트 추가 (Mac)

Page content

개요

  • Mac 유저를 위해 한글 폰트 추가하는 방법을 설명한다.
  • 기본 코드는 Windows에서도 동작한다.
  • 폰트 추가 방법은 생략한다.

한글 폰트 깨진 시각화

  • 간단하게 깨진 한글이 들어간 시각화를 구현한다.
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt
import matplotlib as mpl
 
plt.plot([1, 2, 3, 4, 5])
plt.title("테스트")
plt.show()
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:238: RuntimeWarning: Glyph 53580 missing from current font.
  font.set_text(s, 0.0, flags=flags)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:238: RuntimeWarning: Glyph 49828 missing from current font.
  font.set_text(s, 0.0, flags=flags)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:238: RuntimeWarning: Glyph 53944 missing from current font.
  font.set_text(s, 0.0, flags=flags)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:201: RuntimeWarning: Glyph 53580 missing from current font.
  font.set_text(s, 0, flags=flags)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:201: RuntimeWarning: Glyph 49828 missing from current font.
  font.set_text(s, 0, flags=flags)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:201: RuntimeWarning: Glyph 53944 missing from current font.
  font.set_text(s, 0, flags=flags)

png

추가할 한글 폰트 확인

  • 반복문을 사용하여 Nanum 폰트 코드가 있는지를 확인하였다.
  • 이 때, if 조건문에 필자는 경로로 지정했는데, 이 부분은 독자들과 조금 다를 수 있으니 유의한다.
  • count = 0와 관련된 코드는 삭제해도 상관없다.
    • 필자는 결괏값이 무한정 길어지는 방지하기 위해 적용했을 뿐이다.
count = 0
for font in fm.fontManager.ttflist:
    # print(font.fname)
    count += 1
    if '/Users/evan/Library/Fonts/Nanum' in font.fname and count <= 100:
        print(count, font.name, font.fname)
61 NanumSquareRound /Users/evan/Library/Fonts/NanumSquareRoundB.ttf
65 NanumMyeongjo /Users/evan/Library/Fonts/NanumMyeongjo.ttf
75 NanumBarunGothic /Users/evan/Library/Fonts/NanumBarunGothicLight.ttf
86 NanumGothic /Users/evan/Library/Fonts/NanumGothicExtraBold.ttf
87 NanumSquareRound /Users/evan/Library/Fonts/NanumSquareRoundEB.ttf
93 NanumSquare /Users/evan/Library/Fonts/NanumSquareLight.ttf

한글 텍스트 추가

  • 이제 해당 경로를 불러와서 아래와 같이 코드를 추가한다.
  • 그리고 변경된 텍스트를 확인해본다.
# NanumSquareRound /Users/evan/Library/Fonts/NanumSquareRoundEB.ttf

fontpath = '/Users/evan/Library/Fonts/NanumMyeongjo.ttf'
font = fm.FontProperties(fname=fontpath, size = 24)
plt.rc('font', family='NanumMyeongjo') 
plt.rcParams["figure.figsize"] = (10, 5)
plt.rcParams['lines.linewidth'] = 2
plt.rcParams['lines.color'] = 'r'
plt.rcParams['axes.grid'] = True 
mpl.font_manager._rebuild()
fm._rebuild()

plt.plot([1, 2, 3, 4, 5])
plt.title("테스트", fontproperties=font)
plt.show()

png

강의 홍보