iBetter Books
수정

이튿날 지윤은 의욕차게 첫 보고서 차트를 그렸다. 제목도 달고, 축 레이블도 달았다. 그런데 결과물을 보는 순간 당황했다.

□□□□□ □□ □□□□

한글이 죄다 네모로 깨져 있었다.

"팀장님, 이거 어떻게 해요?"

팀장이 모니터를 보더니 고개를 끄덕였다. "아, 한글 폰트 설정 안 했구나. 이거 처음에 한 번만 해두면 다음부턴 괜찮아요."


왜 한글이 깨지나

Matplotlib의 기본 폰트는 영문 전용입니다. 한글 문자를 렌더링할 수 없는 폰트가 기본으로 설정되어 있기 때문에 한글이 □로 표시됩니다. 해결책은 한글을 지원하는 폰트를 Matplotlib에 알려주는 것입니다.

운영체제별 설정 방법

Windows

Windows에는 맑은 고딕(Malgun Gothic)이 기본 설치되어 있습니다.

import matplotlib.pyplot as pltimport matplotlibimport platformmatplotlib.rcParams['font.family'] = {'Windows': 'Malgun Gothic', 'Darwin': 'AppleGothic'}.get(platform.system(), 'NanumGothic')matplotlib.rcParams['axes.unicode_minus'] = False  # 마이너스 기호 깨짐 방지plt.title('한글 제목 테스트')plt.plot([1, 2, 3], [10, 20, 30])plt.xlabel('X 축')plt.ylabel('Y 축')plt.show()

실행 결과

macOS

macOS에는 AppleGothic이 있지만 굵기가 고르지 않아, 나눔고딕을 설치해 사용하는 것을 권장합니다.

# Homebrew로 나눔고딕 설치brew install --cask font-nanum

설치 후 Python을 재시작합니다. 재시작 후 아래 코드로 폰트 캐시를 갱신합니다.

import matplotlib.font_manager as fmfm.fontManager = fm.FontManager()  # 폰트 캐시 재초기화 (matplotlib 3.7+)
import matplotlibmatplotlib.rcParams['font.family'] = 'NanumGothic'matplotlib.rcParams['axes.unicode_minus'] = False

Linux (Ubuntu)

# 나눔고딕 설치sudo apt-get install fonts-nanum
import matplotlibmatplotlib.rcParams['font.family'] = 'NanumGothic'matplotlib.rcParams['axes.unicode_minus'] = False

한 번만 설정하는 방법: matplotlibrc 파일

매번 코드에 rcParams를 쓰는 대신, 설정 파일에 영구적으로 저장할 수 있습니다.

import matplotlibprint(matplotlib.matplotlib_fname())  # 설정 파일 경로 확인

출력된 경로의 matplotlibrc 파일을 열어 아래 줄을 찾아 수정합니다.

#font.family: sans-serif

font.family: Malgun Gothic

으로 변경합니다 (# 제거 포함).


지윤이 설정을 마치고 다시 그래프를 그렸다. 이번엔 제목이 깔끔하게 출력됐다.

"이제 한글 써도 되는 거죠?"

"네. 그리고 axes.unicode_minus = False도 같이 넣어야 해요. 그걸 빼면 마이너스 부호도 깨지거든요."

matplotlib.rcParams['axes.unicode_minus'] = False

작은 설정 하나가 앞으로의 모든 작업을 편하게 만들어준다. 지윤은 이 두 줄을 모든 코드 파일 상단에 고정으로 넣기로 했다.