맥 matplotlib 한글 폰트 깨짐 - maeg matplotlib hangeul ponteu kkaejim

 주피터 노트북에서 matplotlib를 이용하여 한글이 들어간 title를 plot하면 한글이 깨져서 나타난다. 아래 스크린 샷을 참고하면 한글 부분은 네모로 처리된것으로 볼 수 있다. 주피터 노트북이 기본적으로 한글 지원 폰트가 아니기 때문에 이러한 문제가 발생하는데, 적용하고자 하는 한글 폰트를 설치하고 시스템에 세팅만 하면 쉽게 해결할 수 있다. 

맥 matplotlib 한글 폰트 깨짐 - maeg matplotlib hangeul ponteu kkaejim

한글 폰트 추가

 네이버에서 폰트를 공짜로 뿌리고 있다. 네이버에 들어가서 폰트를 다운로드 받도록 한다. 

hangeul.naver.com/2017/nanum

[네이버 한글한글 아름답게 : 글꼴모음]

한글의 아름다움, 나눔글꼴로 나눕니다.

hangeul.naver.com

맥 matplotlib 한글 폰트 깨짐 - maeg matplotlib hangeul ponteu kkaejim

Window10 기준으로, 경로에 C:\Windows\Fonts 네이버에서 다운 받은 폰트들을 Fonts 파일에 추가합니다. 

한글 폰트 영구 등록

import matplotlib
print(matplotlib.matplotlib_fname())

윗 경로에 위치한 matplotlibrc 파일이 matplotlib 설정파일이다. 메모장으로 열고 ctrl + f 를 통해 font.family 를 찾는다.

# font.family : sans_serif

주석 처리된 부분을 자신이 원하는 한글 폰트로 바꾼다(여기서는 NanumGothic으로 사용).

font.family : NamumGothic

한글 폰트 적용은 완료 되었지만 - (마이너스) 기호는 깨져보인다. 마이너스 기호를 정상적으로 출력하기 위해서는 하나더 고쳐야 한다. 

ctrl + f로 axes.unicode_minus 부분을 찾아 True 부분을 False 로 바꾼다.

#axes.unicode_minus  : True ## use unicode for the minus symbol

윗 코드 라인을 아래와 같이 바꾼다.

axes.unicode_minus  : False ## use unicode for the minus symbol

폰트가 제대로 들어가는지 확인하기 위해 아래 코드를 입력하면 

import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "NamumGothic"

Font family [fontname] not found 에러가 뜰것이다. 주피터 노트북의 캐시파일이 default 폰트 적용 되어있어 캐시파일을 지우면 된다. 

Font family [fontname] not found 에러

import matplotlib
print(matplotlib.get_cachedir())

윗 경로에 위치한 파일과 폴더를 전부 삭제한다. 

맥 matplotlib 한글 폰트 깨짐 - maeg matplotlib hangeul ponteu kkaejim

주피터 노트북을 재실행하면 다음과 같이 한글이 제대로 출력된다. 

맥 matplotlib 한글 폰트 깨짐 - maeg matplotlib hangeul ponteu kkaejim

맥 matplotlib 한글 폰트 깨짐 - maeg matplotlib hangeul ponteu kkaejim

import matplotlib

from matplotlib import font_manager, rc

import platform

try:

    if platform.system() == 'Windows':

        #윈도우인 경우

        font_name = font_manager.FontProperties(fname="c:/Windows/fonts/malgun.ttf").get_name()

        rc('font', family=font_name)

    else:

        #Mac 경우

        rc('font', family='AppleGothic')

except:

    pass

matplotlib.rcParams['axes.unicode_minus'] = False

Oracle SQL

맥 matplotlib 한글 폰트 깨짐 - maeg matplotlib hangeul ponteu kkaejim

Matplotlib는 한글 폰트를 지원하지 않습니다.

한글로 출력되어야 하는 부분은 네모 박스로 표시되게 됩니다.

맥 matplotlib 한글 폰트 깨짐 - maeg matplotlib hangeul ponteu kkaejim

Matplotlib를 사용하는 파이썬 프로그램의 앞에

한글 폰트를 지정하는 코드를 추가합니다.

다음 알집 파일을 해제하면 한글 폰트가 있습니다.

korean.7z

5.71MB

from matplotlib import font_manager,rc
font_path="d:\\판다스 실습\\korean.ttf"
font_name=font_manager.FontProperties(fname=font_path).get_name()
rc('font',family=font_name)

위 코드를 실행시킵니다.

다시 그래프를 그려보면 한글이 정상적으로 출력됩니다.

맥 matplotlib 한글 폰트 깨짐 - maeg matplotlib hangeul ponteu kkaejim

### MAC OS 한글 폰트 

맥 os 한글 폰트 오류 수정하는 방법입니다.

from matplotlib import rc
rc('font',family='AppleGothic')