[Python] 연습

[python] matplotlib 한글 폰트 적용하기

Simon Yoon 2023. 4. 30. 12:55

폰트 적용 코드

일반적으로 matplotlib 에서 한글 폰트를 적용하기 위해서 아래의 코드를 사용한다.

import matplotlib.pyplot as plt

# 폰트 파일 경로
font_path = '/Library/Fonts/YourFont.ttf'
font_name = plt.matplotlib.font_manager.FontProperties(fname=font_path).get_name()

plt.rcParams['font.family'] = font_name
# rc('font', family=font_name)

 

 

만약 맥에 설치해둔 특정 OTF 폰트를 사용하고 싶으면 font_path 에 otf 폰트 파일 경로를 넣어준다.

import matplotlib.pyplot as plt

# 폰트 파일 경로
font_path = '/Library/Fonts/YourFont.otf'
font_name = plt.matplotlib.font_manager.FontProperties(fname=font_path).get_name()

plt.rcParams['font.family'] = font_name
# rc('font', family=font_name)

 

에러 해결법

만약 이렇게 해도 폰트를 찾을 수 없다고 뜬다면, font_manager 모듈에서 폰트 캐시를 삭제해야 한다.

matplotlib는 처음 폰트를 로딩할 때, 폰트 캐시를 생성하는데, 이 캐시가 잘못되어 폰트를 제대로 인식하지 못하는 경우가 있다.

따라서 아래의 코드를 실행하여 폰트 캐시를 삭제하고 다시 시도한다.

from matplotlib import font_manager
font_manager._rebuild()

 

 

위 코드를 실행했을 때 _rebuild() 메소드가 없다고 나오면 캐시 파일을 직접 삭제해주면 된다.

캐시 파일을 찾기 위해 아래의 코드를 실행한다.

import matplotlib
print(matplotlib.get_cachedir())

일반적으로 '/Users/<유저 이름>/.matplotlib' 이 경로에 가면 fontlist json 파일이 나오는데 해당 파일을 그냥 삭제하면 된다.

jupyter notebook 을 사용하고 있다면, 껐다가 재실행해준다. 이 후 동일하게 폰트 적용하는 코드를 실행시켜주면 한글 폰트가 잘 출력되는 것을 확인할 수 있다.