matplotlib で 日本語 を使えるようにしてみた!



著作権がきちんと整理されているオープンソースIPA フォントを使うのがオススメですが、OS にバンドルされている適当な日本語フォントがあればそれを使って表示させることもできます。後者の場合は配布時に注意した方がいいです。


IPA フォントのインストールは [CentOS] オープンソース日本語フォント IPA フォント のインストールを参考にしてください。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.font_manager as fm

# X軸データ
x = [datetime.datetime(2010,1,1), datetime.datetime(2010,1,2),
     datetime.datetime(2010,1,3), datetime.datetime(2010,1,4),
     datetime.datetime(2010,1,5)]

# Y軸データ
y = [1, 3, 2, 4, 1]

# データをセット
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y, linewidth=7, label=u'ラベル' )

# グラフのフォーマットの設定
days      = mdates.DayLocator()  # every day
daysFmt = mdates.DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_locator(days)
ax.xaxis.set_major_formatter(daysFmt)
fig.autofmt_xdate()

# フォントファイルの指定
# オープンソースの IPA フォントをつかうのがオススメ
# http://ossipedia.ipa.go.jp/ipafont/index.html
prop = fm.FontProperties(fname='/home/hoge/.fonts/ipag00302/ipag.ttf')

# OSに付いている適当なフォントファイルを指定しても表示することは可能
# prop = fm.FontProperties(fname='/usr/share/fonts/ja/TrueType/kochi-gothic-subst.ttf')


# タイトル
plt.title(u'タイトル', size='24', fontproperties=prop)

# X軸 Y軸のラベルの指定
plt.xlabel(u'X軸 ラベル', size='18', fontproperties=prop)
plt.ylabel(u'Y軸 ラベル', size='18', fontproperties=prop)

# 凡例
plt.legend(prop=prop, loc='upper left', shadow=True)

# 描画 後でHTMLに埋め込むためにファイル出力
plt.savefig('/usr/local/apache2/htdocs/test/test0.png')