본문 바로가기
파이썬

[파이썬] matplotlib 한글 깨짐 해결하기

by I!i어★떤☆날★에Ι!i 2022. 6. 20.
반응형

파이썬의 matplotlib로 그래프를 그릴 때 나오는 한글 깨짐 현상은 한글 폰트를 적용하여 해결할 수 있다. 단순히 encoding 같은 것으로 해결하려고 하면 더욱 미궁으로 빠지게 된다. 폰트를 이용하여 한글 깨짐 현상을 해결해 보자.

 

* 한글깨짐 현상

파이썬의 matplotlib으로 그래프를 그릴 때 한글을 출력하려고 했지만 한글이 깨져 나와서 좌절하는 경우가 많다. matplotlib은 기본적으로 한글을 지원하지 않는다. 한글을 지원하기 위해서는 한글 폰트를 설정하여 한글을 표현해야 한다.

 특히 한글깨짐현상을 해결하려고 encoding을 살펴보는 사람이 많은데, encoding은 문자의 해석이나 통신 등을 맞추기 위한 것이다. 한글 출력과는 다른 얘기다.

 

matplotlib_한글깨짐
matplotlib의 한글깨짐 현상

그래프창의 한글이 깨짐을 확인할 수 있다.

 

* 폰트설정으로 한글 깨짐 해결

 

폰트를 설정하기 위해서는 먼저 내 컴퓨터에서 설치되어 있는 폰트를 확인해야 한다.

 

 

1) 커맨트 창으로 한글 폰트 찾기

 

파이썬 커맨드창에서 다음과 같이 내 컴퓨터의 폰트 리스트를 확인해 보자.

import matplotlib.font_manager as fm
[f.name for f in fm.fontManager.ttflist]

 

엄청 많이 나온다. 이 중에서 한글을 지원하는 폰트를 찾아야 한다.

 

python_font_list
파이썬 폰트리스트

 

보통 맑은(Malgun)고딕이나 나눔(Nanum) 고딕 같은 폰트가 있을 것이다. 나는 나눔 고딕을 사용해 보았다. 폰트명을 정확히 입력해야 에러가 나지 않는다.

import matplotlib.pylab as plt
import numpy as np

plt.rc("font", family="NanumGothic")

x = np.arange(1,10)
y = x*x
plt.plot(x,y)
plt.legend(["한글표시"])
plt.show()

다행히 내컴퓨터에 나눔고딕이 있어서 한글이 잘 출력된다.

 

matplotlib의_한글표시
matplotlib에서 한글표시

 

 

 

2) 내컴퓨터에서 한글폰트 찾기

 

커맨드창으로 한글 폰트를 찾으려니 너무 많고 뭐가 지원하는지 잘 모르겠다. 이럴 때는 내 컴퓨터의 설정을 통해서 한글 폰트를 찾아보자.

 

내 컴퓨터 검색에 "font" 또는 "글꼴 설정"으로 찾아보자.

 

 

윈도우_글꼴설정
윈도우 글꼴설정

 

 글꼴 설정창으로 이동하면 현재 내 컴퓨터에서 지원 가능한 글꼴들이 쭉 나올 것이다. 이 중에서 한글을 바로 찾던가 필터를 한글 또는 한국어로 설정 해서 한글 글꼴을 찾아보자.

 

글꼴_필터링
글꼴 필터링

 

한글글꼴을 선택해 보면 글꼴 파일 이름이 표시된다. 

 

설정의_글꼴상세표시
내컴퓨터 설정의 글꼴화면에서 글꼴상세표시

 

위의 폰트리스트에서 이 글꼴 파일 이름으로 찾아보면 원하는 서체를 이용할 수 있다.

font_list에서_바탕체_확인
폰트리스트에서 바탕체 확인

 폰트리스트에 바탕체가 있다.

 

3) 폰트 경로 설정해서 해결

 

위에서 폰트를 설정했지만 한글이 출력되지 않을 경우에는 파이썬에서 내 컴퓨터의 폰트를 찾지 못할 수 있기 때문에 수동으로 경로를 설정해 줘야 한다.

 

위의 설정에서 찾은 글꼴 경로를 잘 기억해 놓자. 

파일이 진짜 있는지 꼭 확인하고 싶다면 윈도에서는 보통 windows의 font 폴더 밑에 폰트 파일들이 있으므로, 해당 경로를 찾아가 보면 된다.

 

폰트 설정에 폰트의 정체 경로를 작성해 주면 폰트가 잘 인식된다.

import matplotlib as mp
from matplotlib import pyplot as plt
import numpy as np
import matplotlib.font_manager as fm


fm.get_fontconfig_fonts()
font_name = fm.FontProperties(fname='C:/Windows/Fonts/batang.ttc').get_name()
mp.rc('font', family=font_name)

x = np.arange(1,10)
y = x*x

plt.plot(x,y)
plt.legend(["한글표시"])
plt.show()

 

출력도 잘 되는 것을 확인할 수 있다.

 

matlablib_한글표시출력
matlablib에서 한글 출력

 

 

4) 한글 폰트 설치로 해결

 

만약에 내컴퓨터에 한글 폰트가 없다면 네이버의 무료 한글 폰트를 설치해 보자.

다운로드한 후 적당한 위치에 저장해 놓고 사용하면 된다.

 

https://hangeul.naver.com/2017/nanum

 

네이버 글꼴 모음

네이버가 만든 150여종의 글꼴을 한번에 만나보세요

hangeul.naver.com

 

 

 

 

반응형

댓글