머신러닝/파이썬 활용
matplotlib 한글 폰트 설정
좋아좋아브라이언
2024. 2. 9. 09:36
폰트를 지정하는 두가지 방법
matplotlib에서 폰트를 지정하여 출력하는 하는 대표적인 방법은 크기 두 가지이다.
- 텍스트 출력시 폰트 특성을 지정: FontProperties 속성으로 폰트 속성을 지정
- 전역으로 지정: rcParams 을 사용하여 전역으로 설정값을 지정
- 폰트가 보이지 않으면 캐쉬 삭제한다.
1. FontProperties 속성
os마다 디렉토리 설정이 헷갈린다. 설치되어 있는 폰트위치를 확인하고 한글 폰트를 지정하는 법을 확인한다.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from mpl_toolkits import mplot3d
import matplotlib.font_manager as mfm
# 설치된 폰트 및 디렉토리 확인
font_list = mfm.findSystemFonts(fontpaths=None, fontext='ttf')
font_list[:10]
font-list에 대한 출력
['C:\\Windows\\Fonts\\micross.ttf',
'C:\\Windows\\Fonts\\ERASMD.TTF',
'C:\\Windows\\Fonts\\comic.ttf',
'C:\\Windows\\Fonts\\H2PORM.TTF',
'C:\\Windows\\Fonts\\HanSantteutDotum-Bold.ttf',
'C:\\Windows\\Fonts\\couri.ttf',
'C:\\Windows\\Fonts\\seguibli.ttf',
'C:\\Windows\\Fonts\\BAUHS93.TTF',
'C:\\Windows\\Fonts\\RAGE.TTF',
'C:\\Windows\\Fonts\\Pyidaungsu-1.8.3_Numbers.ttf']
폰트 설정
# 구글 colab 환경일 경우 그래프에 한글 폰트 사용을 위한 설정
# path = 'noviceml/font/NanumBarunGothic.ttf'
# fontprop = mfm.FontProperties(fname=path, size=18)
# 로컬 환경일 경우 그래프에 한글 폰트 사용을 위한 설정
# https://financedata.github.io/posts/matplotlib-hangul-for-ubuntu-linux.html
# 아래 코드의 주석 제거 후 경로를 유저 컴퓨터의 폰트 파일 경로로 수정하세요.
# path = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
# fontprop = mfm.FontProperties(fname=path, size=18)
path = 'C:\\Windows\\Fonts\\NanumBarunGothic.ttf'
fontprop = mfm.FontProperties(fname=path, size=18)
폰트가 없다면...설
2. 전역으로 지정: rcParams
font.family에 설정한다.
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
#font.family에 설정
plt.rcParams['font.family'] ='Malgun Gothic'
나에게 설치된 font.family는 어떤것이 있는지 확인하는 코드
import matplotlib.font_manager
from IPython.core.display import HTML
def make_html(fontname):
return "<p>{font}: <span style='font-family:{font}; font-size: 24px;'>{font}</p>".format(font=fontname)
code = "\n".join([make_html(font) for font in sorted(set([f.name for f in matplotlib.font_manager.fontManager.ttflist]))])
HTML("<div style='column-count: 2;'>{}</div>".format(code))
3.폰트 캐쉬 삭제
폰트가 안보이면...캐쉬를 삭제해 보자..
import shutil
import matplotlib as mpl
print(f'캐시 디렉토리: {mpl.get_cachedir()}')
shutil.rmtree(matplotlib.get_cachedir())