1 분 소요


그래프 한글폰트 상황

In [1]:
import numpy as np
In [2]:
# 경고 메시지 무시
import warnings
warnings.filterwarnings('ignore')
In [3]:
data = np.random.randint(-100, 100, 50).cumsum()
data
Out [3]:
array([ 50,  39,  52, 142,  46,  48, 141, 189, 246, 197, 275, 351, 353,
       281, 218, 156, 168, 222, 169, 180, 142, 140, 154, 166, 128, 193,
       138, 138, 127, 127, 100, 178, 232, 256, 239, 212, 197, 228, 192,
       291, 276, 203, 230, 168, 157, 231, 323, 414, 509, 501], dtype=int32)
In [4]:
import matplotlib.pyplot as plt
In [5]:
plt.plot(range(50), data, 'r')
plt.title('시간별 가격 추이')
plt.ylabel('주식가격')
plt.xlabel('시간(분)')
Out [5]:
Text(0.5, 0, '시간(분)')

img

맑은고딕(Malgun Gothic)으로 설정

“C:\Windows\Fonts\malgun.ttf”

1. FontProperties 사용

In [6]:
import matplotlib.font_manager as fm
In [7]:
path = "C:\\Windows\\Fonts\\malgun.ttf"
fontprop = fm.FontProperties(fname=path, size=16) # 파일 경로가 필요, 해당 설정을 지정한 곳만 한글가능
In [8]:
plt.plot(range(50), data, 'r')
plt.title('시간별 가격 추이', fontproperties=fontprop)
plt.ylabel('주식가격')
plt.xlabel('시간(분)')
Out [8]:
Text(0.5, 0, '시간(분)')

img

2. rcParams로 전역글꼴 설정

세션단위로 설정필요(쓸 때 선언을 해줘야 함)

In [9]:
plt.rcParams['font.size']
Out [9]:
10.0
In [10]:
plt.rcParams['font.family']
Out [10]:
['sans-serif']
In [11]:
plt.rcParams['font.family'] = 'Malgun Gothic'
In [12]:
plt.plot(range(50), data, 'r')
plt.title('시간별 가격 추이')
plt.ylabel('주식가격')
plt.xlabel('시간(분)')
Out [12]:
Text(0.5, 0, '시간(분)')

img

In [13]:
import matplotlib as mpl
In [14]:
mpl.matplotlib_fname()
Out [14]:
'C:\\Users\\user\\anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'
In [15]:
# 시스템 폰트 확인
# fm.findSystemFonts()
In [16]:
[(f.fname, f.name) for f in fm.fontManager.ttflist if 'Malgun' in f.name]
Out [16]:
[('C:\\Windows\\Fonts\\malgunsl.ttf', 'Malgun Gothic'),
 ('C:\\Windows\\Fonts\\malgun.ttf', 'Malgun Gothic'),
 ('C:\\Windows\\Fonts\\malgunbd.ttf', 'Malgun Gothic')]
In [17]:
[(f.fname, f.name) for f in fm.fontManager.ttflist if 'Nanum' in f.name]
Out [17]:
[('C:\\Users\\user\\AppData\\Local\\Microsoft\\Windows\\Fonts\\NanumBrush.ttf',
  'Nanum Brush Script'),
 ('C:\\Windows\\Fonts\\\x7f\x7f\x7f\x7fEXTRABOLD.TTF', 'NanumGothic'),
 ('C:\\Windows\\Fonts\\\x7f\x7f\x7f\x7fBOLD.TTF', 'NanumGothic'),
 ('C:\\Windows\\Fonts\\\x7f\x7f\x7f\x7f.TTF', 'NanumGothic'),
 ('C:\\Users\\user\\AppData\\Local\\Microsoft\\Windows\\Fonts\\NanumPen.ttf',
  'Nanum Pen Script')]

추가폰트가 인식이 되지 않는다면 C:/User/사용자/.matplotlib 폴더를 삭제하여 갱신해서 새로 생성하도록 함

In [18]:
# 해당 세션의 폰트 설정
plt.rcParams['font.family'] = 'Nanum Pen Script'

# 그래프에서 마이너스 폰트 깨지는 문제에 대한 조치
plt.rcParams['axes.unicode_minus'] = False
In [19]:
plt.plot(range(50), data, 'r')
plt.title('시간별 가격 추이')
plt.ylabel('주식가격')
plt.xlabel('시간(분)')
Out [19]:
Text(0.5, 0, '시간(분)')

img

3. 설정파일에 정의

In [20]:
mpl.matplotlib_fname()
Out [20]:
'C:\\Users\\user\\anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'

설정파일에서 수정
font.family: D2Coding
font.size: 14.0

Reference

  • 이 포스트는 SeSAC 인공지능 자연어처리, 컴퓨터비전 기술을 활용한 응용 SW 개발자 양성 과정 - 심선조 강사님의 강의를 정리한 내용입니다.

댓글남기기