2010年1月13日水曜日

matplotlibで日本語epsを生成する方法

matplotlibは素晴らしく使い勝手がいいのだが,日本語を表示しようとした途端にハマってしまった.まだちゃんと調べきれてないんだが,どういうわけかうまく行ったり行かなかったりで,とりあえず自宅環境でちゃんと動いたのでメモ.手元の環境は python 2.6 + matplotlib 0.99.1.

最終的な結論としては,フォントを適切に設定すればOK.フォントファイルの指定はFontPropertiesを使う必要があるようだ.ここで埋め込むフォントで挙動が変わるらしいことが,経験的にわかった.動作を確認したのは最新のIPAフォント(現時点でver 003.01).このフォントは,埋込PDFを作ることをライセンス上許可しているため,フォント埋込みを要求される論文投稿など(加えて,国際学会に日本語の処理の文脈で投稿する必要がある時)使うと良いだろう.こういう基盤の仕事をオープンソースという形できちんとこなしているIPAはすばらしいと思う.

フォントの指定は以下のようにすればOK.


from pylab import *
import matplotlib.font_manager as fm
prop = fm.FontProperties(fname='N:\\WINDOWS\\Fonts\\ipamp.odf')
xlabel(u'本日は晴天なり', fontproperties=prop)
show()


あとは普通にeps出力すれば良い.いくつかハマった点として,どういうわけか古いIPAフォント(ttfファイルだった)を使っていたら,”本本本本本本”と表示された.謎である.MS明朝を指定するとeps出力できなかった.
他の環境では,epsが開けなかったり,pdfなら出力できたり.今思うとこれはgs側の設定の問題かもしれない.

0 件のコメント:

コメントを投稿