파이썬의 matplotlib로 그래프를 그릴 때 나오는 한글 깨짐 현상은 한글 폰트를 적용하여 해결할 수 있다. 단순히 encoding 같은 것으로 해결하려고 하면 더욱 미궁으로 빠지게 된다. 폰트를 이용하여 한글 깨짐 현상을 해결해 보자.
* 한글깨짐 현상
파이썬의 matplotlib으로 그래프를 그릴 때 한글을 출력하려고 했지만 한글이 깨져 나와서 좌절하는 경우가 많다. matplotlib은 기본적으로 한글을 지원하지 않는다. 한글을 지원하기 위해서는 한글 폰트를 설정하여 한글을 표현해야 한다.
특히 한글깨짐현상을 해결하려고 encoding을 살펴보는 사람이 많은데, encoding은 문자의 해석이나 통신 등을 맞추기 위한 것이다. 한글 출력과는 다른 얘기다.
그래프창의 한글이 깨짐을 확인할 수 있다.
* 폰트설정으로 한글 깨짐 해결
폰트를 설정하기 위해서는 먼저 내 컴퓨터에서 설치되어 있는 폰트를 확인해야 한다.
1) 커맨트 창으로 한글 폰트 찾기
파이썬 커맨드창에서 다음과 같이 내 컴퓨터의 폰트 리스트를 확인해 보자.
import matplotlib.font_manager as fm
[f.name for f in fm.fontManager.ttflist]
엄청 많이 나온다. 이 중에서 한글을 지원하는 폰트를 찾아야 한다.
보통 맑은(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()
다행히 내컴퓨터에 나눔고딕이 있어서 한글이 잘 출력된다.
2) 내컴퓨터에서 한글폰트 찾기
커맨드창으로 한글 폰트를 찾으려니 너무 많고 뭐가 지원하는지 잘 모르겠다. 이럴 때는 내 컴퓨터의 설정을 통해서 한글 폰트를 찾아보자.
내 컴퓨터 검색에 "font" 또는 "글꼴 설정"으로 찾아보자.
글꼴 설정창으로 이동하면 현재 내 컴퓨터에서 지원 가능한 글꼴들이 쭉 나올 것이다. 이 중에서 한글을 바로 찾던가 필터를 한글 또는 한국어로 설정 해서 한글 글꼴을 찾아보자.
한글글꼴을 선택해 보면 글꼴 파일 이름이 표시된다.
위의 폰트리스트에서 이 글꼴 파일 이름으로 찾아보면 원하는 서체를 이용할 수 있다.
폰트리스트에 바탕체가 있다.
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()
출력도 잘 되는 것을 확인할 수 있다.
4) 한글 폰트 설치로 해결
만약에 내컴퓨터에 한글 폰트가 없다면 네이버의 무료 한글 폰트를 설치해 보자.
다운로드한 후 적당한 위치에 저장해 놓고 사용하면 된다.
https://hangeul.naver.com/2017/nanum
'파이썬' 카테고리의 다른 글
파이썬 파일을 exe파일로 만들기 - pyinstaller (0) | 2024.03.10 |
---|---|
[파이썬] 파이썬으로 메트로놈 구현하기 (0) | 2023.07.15 |
댓글