Jupyter lab 등에서 matplotlib 그래프 출력을 할 때
한글 폰트는 깨져서 나오는 문제가 발생합니다.
이는 초기 설정된 폰트가 한글을 지원하지 않기 때문입니다.
matplotlib의 폰트 환경을 변경하는 과정을 알려드립니다.
matplotlib에서 ' rcParams ' 값이 있습니다.
" Runtime Configuration Parameters"
런타임 구성 매개변수, matplotlib의 전역 설정값입니다.
import matplotlib as mpl
# rcParams 딕셔너리 내의 값 확인
mpl.rcParams
"""
'figure.titlesize': 'large',
'figure.titleweight': 'normal',
'font.cursive': ['Apple Chancery',
'Textile',
'Zapf Chancery',
'Sand',
'Script MT',
'Felipa',
'Comic Neue',
'Comic Sans MS',
'cursive'],
'font.family': ['sans-serif'],
'font.fantasy': ['Chicago',
'Charcoal',
'Impact',
'Western',
'xkcd script',
'fantasy'],
...
"""
Dictionary 자료이기 때문에 딕셔너리 참조로 개별값을 볼 수 있습니다.
mpl.rcParams['font.family']
# ['sans-serif']
초기 설정된 font-family의 값은 'sans-serif'임을 알게 되었습니다.
이 설정을 한글 지원하는 폰트로 변경하면 됩니다.
새로 반영할 폰트는 간단하게 OS에서 사용하는 것으로 가져오겠습니다.
Windows의 경우 "C:\windows\Fonts"에 저장되어 있습니다.
경로에 보이지 않는다면 "Fonts"를 파일탐색기 내에 검색하면 나옵니다,
적용할 폰트 파일을 우클릭 후 '속성'에 들어갑니다.
파일명을 확인할 수 있습니다.
여기서 필요한 정보는 "폰트 파일 경로"입니다.
" C:\Windows\Fonts\malgun.ttf "
찾아낸 경로의 폰트 파일을 불러와 반영해야 합니다.
현재 font는 "sans-serif"인데 "경로"가 아닌 "폰트명"입니다.
이는 경로에서 직접 가져오는 것이 아니라
사용할 수 있도록 '준비된' 값을 사용한다는 것입니다.
matplotlib의 font_manager 모듈에서
경로에 있는 폰트 파일을 적용할 수 있도록 도와줍니다.
import matplotlib.font_manager as fm
# 적용할 폰트의 경로명
path = 'C://Windows//Fonts//NanumGothic.ttf'
# 폰트 파일을 가져와 설정에 반영하고, get_name()으로 "폰트명"을 가져옴.
# fname : 가져올 폰트 경로
# size : 포트 사이즈 설정
font_name = fm.FontProperties(fname=path, size=30).get_name()
# 폰트 설정 값을 가져온 후의 "폰트명"으로 font.family 값 변경.
mpl.rcParams['font.family'] = font_name
matplotlib.pyplot의 rc Method로 변경할 수도 있습니다.
rcParams의 값을 변경해주는 Method이며
rcParams 딕셔너리 접근으로 변경하는 것과 같은 결과를 가져옵니다.
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# Windows System의 폰트 경로
path = 'C://Windows//Fonts//NanumGothic.ttf'
font_name = fm.FontProperties(fname=path, size=30).get_name()
# matplotlib.rcParams['font.family']의 값을 변경한다.
plt.rc('font', family=font_name)
font_manager에서 적용해볼 수 있는 폰트 리스트를 확인할 수 있습니다.
원하는 폰트를 찾아 시도해볼 수 있습니다.
import matplotlib.font_manager as fm
select_font = fm.findSystemFonts()
for f in select_font:
print(f)
"""
C:\Windows\Fonts\GOUDOSB.TTF
C:\Windows\Fonts\GIL_____.TTF
C:\Windows\Fonts\corbell.ttf
C:\Windows\Fonts\FRABKIT.TTF
C:\Windows\Fonts\UnBatang.ttf
C:\Windows\Fonts\segoeuib.ttf
C:\Windows\Fonts\bahnschrift.ttf
C:\Windows\Fonts\BOD_PSTC.TTF
C:\Windows\Fonts\segoescb.ttf
C:\Windows\Fonts\seguibl.ttf
C:\Windows\Fonts\HANBatang.ttf
...
"""
변경 최종 코드
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.font_manager as fm
# Windows System의 폰트 경로
path = 'C://Windows//Fonts//NanumGothic.ttf'
font_name = fm.FontProperties(fname=path, size=30).get_name()
plt.rc('font', family=font_name)
# 또는 mpl.rcParams['font.family'] = font_name
-끝-
'작업 > Linux, etc' 카테고리의 다른 글
[Excel] txt 데이터 분배해서 셀에 담기 (1) | 2024.05.22 |
---|---|
Virtual Box (rc= -5637) Error (Windows) (0) | 2024.05.21 |
VMware Workstation 17 Bridge로 IP 변경하기 (0) | 2024.01.06 |
우분투(Ubuntu) 22.04 GUI 환경 사용 방법 (0) | 2024.01.04 |
Excel 특정 문자 바꾸기 (SUBSTITUTE) (0) | 2023.07.08 |