반응형
matplotlib 그림에서 한글 폰트사용하기.
- 사용환경 : windows 7 64bit, python 2.7.9 64bit, matplotlib 1.4.2
matplotlib 에서 한글 사용시 한글 폰트가 깨짐.
In [1]:
%matplotlib inline
In [2]:
import matplotlib
matplotlib.__version__
Out[2]:
컴퓨터에 설치된 font 구하기
http://stackoverflow.com/questions/10960463/non-ascii-characters-in-matplotlib
** font_manager.py 소스 -- https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/font_manager.py
http://matplotlib.org/api/font_manager_api.html
http://matplotlib.org/api/font_manager_api.html#matplotlib.font_manager.FontProperties
In [3]:
# 설치된 TTF 폰트 이름 구하기
import matplotlib.font_manager
for i, x in enumerate(matplotlib.font_manager.fontManager.ttflist):
print i, x, type(x) , x.name # x.name == font name (family name)
if i == 10: break # 10개만 출력하기
In [4]:
import matplotlib.font_manager
myfnt = matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
print len(myfnt)
print myfnt[:10] # 10개만 출력하기
In [5]:
import matplotlib.font_manager as fm
for i, x in enumerate(fm.fontManager.ttflist):
print i, x, type(x) , x.name , x.fname # x.name == font name (family name)
fp1=fm.FontProperties(fname= x.fname).get_name() # font famiily name
print fp1
if i == 10: break # 10개만 출력하기
matplotlib 그림 크기 설정하기
http://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure
figsize -- w,h tuple in inches
dpi -- Dots per inch
In [6]:
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib
fig = plt.figure()
fig.suptitle('bold figure suptitle', fontsize=14, fontweight='bold')
ax = fig.add_subplot(111)
fig.subplots_adjust(top=0.85)
ax.set_title('axes title')
ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')
ax.text(3, 8, 'boxed italics text in data coords', style='italic',
bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})
ax.text(2, 6, r'an equation: $E=mc^2$', fontsize=15)
msg = unicode('colored 한글 입력 테스트 in axes coords','utf-8')
# msg = 'colored 한글 in axes coords'
ax.text(0.95, 0.01, msg,
verticalalignment='bottom', horizontalalignment='right',
transform=ax.transAxes,
color='green', fontsize=15) # 한글 출력 깨져서 나온다...
ax.plot([2], [1], 'o')
ax.annotate('annotate', xy=(2, 1), xytext=(3, 4),
arrowprops=dict(facecolor='black', shrink=0.05))
ax.axis([0, 10, 0, 10])
plt.show()
한글 깨져서 나온다.
한글 폰트를 설정하고, 그림 크기를 키우자...
In [7]:
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='HYsanB') # 한글 폰트 설정
# fig = plt.figure()
fig = plt.figure(figsize=(10, 10), dpi=100) # 그림 사이즈, 해상도 설정
fig.suptitle('bold figure suptitle', fontsize=14, fontweight='bold')
ax = fig.add_subplot(111)
fig.subplots_adjust(top=0.85)
ax.set_title('axes title')
ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')
ax.text(3, 8, 'boxed italics text in data coords', style='italic',
bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})
ax.text(2, 6, r'an equation: $E=mc^2$', fontsize=15)
msg = unicode('colored 한글 입력 테스트 in axes coords','utf-8')
# msg = 'colored 한글 in axes coords'
ax.text(0.95, 0.01, msg,
verticalalignment='bottom', horizontalalignment='right',
transform=ax.transAxes,
color='green', fontsize=15)
ax.plot([2], [1], 'o')
ax.annotate('annotate', xy=(2, 1), xytext=(3, 4),
arrowprops=dict(facecolor='black', shrink=0.05))
ax.axis([0, 10, 0, 10])
plt.show()
** 한글 출력 성공!!!
반응형
'python' 카테고리의 다른 글
python - postgresql 접속하기 (0) | 2015.05.27 |
---|---|
SQLAlchemy 설치 & tutorial - winodws 7 64bit (0) | 2015.05.21 |
python 2.7 한글 UnicodeEncodeError, UnicodeDecodeError 해결하기 (1) | 2015.03.27 |
ipython 3.0 ( jupyter ) 으로 업그레이드 하기 (0) | 2015.03.13 |
ubuntu 14.04 lts 에서 pycharm 4.0 설치하기 (0) | 2015.02.02 |