matplotlib & 한글

Outline

matplotlib에서 차트를 그릴 때, 한글이 깨지지 않도록 해봅니다.

Code

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.font_manager as fm

data = np.random.randint(-100, 100, 20)

차트를 그리기 위해 샘플 데이터를 만들었습니다.

array([-65,   8,  99,  58, -59,  69, -56,   6,  52,  58,  47,  -2, -30,
        56, -68,  79,  47,  11, -34,  43])

레이블에 한글을 넣어 차트를 한 번 그려봅니다.

plt.figure(figsize=(14,6))
plt.plot(data, 'r')
plt.title('한글테스트')
plt.ylabel('값')
plt.xlabel('인덱스')

한글이 깨집니다.

PC에 있는 한글폰트의 위치를 찾은 뒤, FontProperties를 이용하여 코드를 수정합니다.

path = 'C:\\WINDOWS\\Fonts\\NanumGothic.ttf'
font_name = fm.FontProperties(fname=path, size=40).get_name()
plt.rc('font', family=font_name)
plt.figure(figsize=(14,6))
plt.plot(data, 'r')
plt.title('한글테스트')
plt.ylabel('값')
plt.xlabel('인덱스')

한글은 잘 나오지만 음수값을 표현하는 '-' 기호가 깨집니다.

rcParam의 'axes.unicode_minus'를 세팅하는 것으로 수정합니다.

mpl.rcParams['axes.unicode_minus'] = False
path = 'C:\\WINDOWS\\Fonts\\NanumGothic.ttf'
font_name = fm.FontProperties(fname=path, size=40).get_name()
plt.rc('font', family=font_name)
plt.figure(figsize=(14,6))
plt.plot(data, 'r')
plt.title('한글테스트')
plt.ylabel('값')
plt.xlabel('인덱스')

한글과 음수기호가 모두 잘 출력됩니다.

좋은 웹페이지 즐겨찾기