본문 바로가기
취미

[matplotlib] python matplotlib 그래프 한글 깨짐 해결

by climb_JJIYO 2024. 1. 20.
반응형

한글로 된 그래프를 그릴 때 발생하는 한글 깨짐 문제는 많은 파이썬 사용자들이 마주치는 일입니다. 특히, matplotlib 라이브러리를 사용하는 경우, 기본 설정으로는 한글이 깨져서 표시되는 경우가 있습니다. 이에 대한 해결책을 살펴보겠습니다.

1. 나눔 글꼴 설치되어 있는지 확인

matplotlib 라이브러리로 그래프를 그리려고 할 때, 컬럼명이 한글일 경우 그래프의 x, y축의 글자가 깨지는 경우가 있습니다.

그때, 한글을 지원하는 글꼴이 설치되어 있는지를 먼저 확인해야 합니다.

아래는 한글을 지원하는 글꼴 중 하나인 "나눔" 글꼴이 설치되어 있는지를 확인하는 파이썬 코드입니다.

>>> import matplotlib.font_manager
>>> font_list = matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
>>> [matplotlib.font_manager.FontProperties(fname=font).get_name() for font in font_list if 'Nanum' in font]

 

2. 나눔 글꼴 설치

한글을 지원하는 글꼴이 설치되어 있지 않을 때, 한글을 지원하는 글꼴 중 하나인 "나눔" 글꼴을 다운로드하여 설치가 필요합니다.

 

첫 번째, cmd 창에서 wget으로 나눔 글꼴 압축파일을 다운로드를 합니다.

두 번째, unzip으로 다운로드한 압축을 해제합니다.

세 번째, rm으로 첫 번째에서 다운로드한 압축파일을 삭제합니다.

네 번째, 두 번째에서 압축파일을 NoumFont 폴더를 폰트가 저장된 폴더 위치로 이동합니다.

다섯 번째, matplotlib 라이브러리 font 폴더에 나눔 글꼴 폴더를 복사합니다.

wget <http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip>
unzip NanumFont_TTF_ALL.zip -d NanumFont
rm -f NanumFont_TTF_ALL.zip
mv NanumFont /usr/share/fonts/
fc-cache -f -v

# matplotlib font 폴더에 "NanumGothic" 글꼴 복사
cd /usr/share/fonts/NanumFont
cp NanumGothic.ttf /home/app/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf

 

아래는 matplotlib 라이브러리의 폰트 경로를 알 수 없을 때, 폰트 경로를 확인할 수 있는 파이썬 코드입니다.

# matplotlib font 경로 확인
>>> import matplotlib as mpl
>>> print(mpl.matplotlib_fname())

3. 기존 plt 캐시 삭제

글꼴을 정상적으로 설치했는데도 적용이 안 되는 경우가 있어 기존 캐시를 삭제하는 단계가 필요합니다. 즉, 새로고침하는 것입니다.

matplotlib의 캐시 파일 경로를 확인하여 rm 명령어를 통해 해당 위치의 캐시 파일을 삭제합니다.

# matplotlib 캐시 파일 경로 확인
>>> import matplotlib as mpl
>>> print(mpl.get_cachedir())
rm -rf /home/voda/.cache/matplotlib/*

4. matplotlib에 설치된 나눔 글꼴 확인

캐시 삭제 후 다시 파이썬에서 matplotlib 라이브러리를 호출하여 matplotlib에 설치된 나눔 글꼴을 확인합니다.

아래는 관련 라이브러리를 import 하고 나눔 글꼴이 정상적으로 설치되었는지 확인하는 코드입니다.

>>> import matplotlib as mpl
>>> import matplotlib.pyplot as plt
>>> import matplotlib.font_manager as fm

>>> [(f.name, f.fname) for f in fm.fontManager.ttflist if 'Nanum' in f.name]

5. 현재 적용되고 있는 글꼴 확인

설치한 나눔 글꼴이 현재 적용되고 있는지 확인하는 단계입니다.

여기서 중요한 것은 글꼴 설치 후 터미널을 재실행하여 진행해야 새로 설치한 글꼴이 적용됩니다.

아래는 현재 적용되고 있는 글꼴을 확인할 수 있는 코드입니다.

>>> print(mpl.rcParams['font.family']) # font
>>> print(mpl.rcParams['font.size']) # size

※ 글꼴 설치 후 터미널 재실행

6. 한글, 마이너스 깨짐 처리

마지막으로, 한글과 마이너스 글자가 깨지는 현상을 해결하기 위해 작성되어야 하는 코드입니다.

그래프 그리는 코드 작성 전 파이썬 코드를 작성해야 한글과 마이너스가 깨지는 현상을 해결할 수 있습니다.

matplotlib의 폰트를 설치한 나눔 글꼴로 설정하고, 마이너스 글자도 깨지지 않도록 설정합니다.

>>> plt.rc('font', family='NanumGothic')
>>> mpl.rcParams['axes.unicode_minus'] = False

 

나눔 글꼴이 아닌 한글을 지원하는 다른 글꼴을 설치하여 해결할 수도 있습니다.

단계별로 차근차근 진행하다 보면, 한글을 그래프로 만들 때 한글이 깨지는 현상을 해결할 수 있습니다.

 

결론적으로, 한글로 된 그래프를 그릴 때 발생하는 한글 깨짐 문제를 해결하기 위해서는 matplotlib 라이브러리의 설정을 수정해주어야합니다. 그 중에서도 한글 폰트를 설치하고 지정하는 작업이 필요합니다. 이를 위해 설정한 한글 폰트를 matplotlib에 적용하여 한글이 깨지지 않도록 할 수 있습니다. 간단한 설정 작업을 통해 한글로 된 그래프를 원활하게 그릴 수 있습니다. 

반응형