GnuPlot を Python から使ってみることにした。Python からは、
gnuplot-py を使ってみる。以前、
Solaris 10 で iozone を使ってディスクIOのパフォーマンスを「見る」 のときに、iozone の結果をプロットするのに GnuPlot を使ったのだが存在を忘れてた。でもツールが勝手にやってくれただけなので、中身は理解してなかった。
とりあえず Windows で Gnuplot-py が使えるか確認。
gnuplot 4.4.2 をダウンロードして使ってみる。
Gnuplot.py は sourceforge からダウンロードして python setup.py install でインストール。
gnuplot の動作確認。wgnuplot.exe をダブルクリックして起動すると表示が汚い。画面で右クリックして、Choose Font を選択してフォントを変更しておく。
初歩 gnuplot 入門 のあたり参照。日本語版を使った方がとまどいは少ないか。とりあえず、フォントを変更したあと右クリックで Update を選択して変更を保存しておかないと再起動したあとまた元にフォントが戻るので注意。
[File]-[Demos]メニューを選択して、ファイル選択画面で上に上がってから demo を選択し、all.dem を選択すると、次々とデモが表示される。OK ボタンを押すかリターンを押していくとどんどん次のグラフが表示される。かなりたくさんのデモがある。こういうのが描けるのねぇと見ながら、基本的な表示に問題がないのを確認。
wgnuplot.exe のプロンプトで、「plot sin(x)」とかやってグラフが表示されたら、そこでも右クリックしてと思ったら、いったん m キーを押してからでないの右クリックは利かない(マウスのモードを変更 unset mouse の状態へ)。あるいは、ウィンドウの左上のタイトルバーのアイコンをクリックして、Option Choose Font で変更。そして Update。グラフの描画画面でもフォントを変更しておかないとダメということ。グラフを一旦閉じて、
set title "日本語試す"
plot sin(x)
と入力してみる。wgnuplot 上では日本語は文字化けして使えるのかーという状態になるが、これは我慢する。ちゃんとグラフの描画時には正しく表示された。
同じように gnuplot-py を使って書いてみる。
import Gnuplot
g = Gnuplot.Gnuplot(debug=1)
g('set data style linespoints')
g.title("日本語を試す 2")
g.plot('sin(x)')
raw_input('リターンを押すと終了\n')
ちゃんとタイトルに日本語も表示できた。とりあえず使えるようだ。ところが、png ファイルを書き出すことができない。
import Gnuplot
g = Gnuplot.Gnuplot(debug=1)
g('set terminal png')
g('set output "sample.png"')
g('set data style linespoints')
g.title("日本語を試す 2")
g.plot('sin(x)')
"日本語を試す 2"のところを "Sampe 03" とすれば、ちゃんと png ファイルが作成される。ということで、png ファイルへの日本語の書き出しがうまくいっていない。png ファイルに書き出すと文字化けしてしまう。
悩む。こうなったら強引にやってやれ。UTF-8 にして、さらに文字列の末尾に全角スペースを2つ入れてみる。するとなんと日本語が表示できた。
#-*- coding: utf-8 -*-
import Gnuplot
g = Gnuplot.Gnuplot(debug=1)
g('set terminal png size 320, 240 font "E:/Windows/Fonts/msgothic.ttc,10"')
g('set output "sample.png"')
g.title("日本語を使ってみる ")
g('set data style linespoints')
data1 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16]]
data2 = [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]]
plot1 = Gnuplot.PlotItems.Data(data1, with="lines", title="日本語 ")
plot2 = Gnuplot.PlotItems.Data(data2, with="lines", title="日本語 ")
g.xlabel("なにがなんだか ")
g.ylabel(" 明不味意 ")
g.plot(plot1, plot2)
Gnuplot-py の参考
ほとんど詐欺的なやり方。いつもちゃんと表示されるわけではないので現状実用的ではないが、無理矢理日本語表示ができた。それにしても、どこが悪さをしているのだろうか。つきとめればもしかしていつでもちゃんと表示できるようになるかもしれない。
どなたか解決方法を知っていたら教えてくださいませ。
追記
原因が分かった。どうやら環境変数のTEMP に一時ファイルの書き出しを行っている際に、これが長すぎると (例えば、\Documents and Settings\username\Local Setings\temp\bababababa) おかしくなるようだ。
ということで、次のような行を入れて、一時的に TEMP を短い名前のディレクトリにしておけば、日本語でも問題なく表示できるようになったと思ったら、やっぱりダメなときもあるので、全角スペースは常に後ろに1つだけつけておくことにした。
import os
os.environ['TEMP'] = "\\TEMP"
これとは違う話だが、
痛い日記 Gnuplot-pyのインストール
Gnuplot.pyはNumericを想定して作ってるのでnumpyとgnuplotのみをインストールしている環境ではGnuplotのtest.pyやdemo.pyが動かない.
とかいう話もあるようだ。自分の場合は Numeric がインストールされていたので問題なかった。Numeric をインストールしていない場合は、
svn co https://gnuplot-py.svn.sourceforge.net/svnroot/gnuplot-py gnuplot-py
demo.py を見ると、from numpy import * となっているので、開発中のバージョンを使った方がよいかもしれない。
Gnluplot-py
その他 gnuplot 関連
お気に入りの記事を「いいね!」で応援しよう
Last updated
2007.11.25 22:51:35
コメント(0)
|
コメントを書く
もっと見る