傀儡師の館.Python

2007/11/30(金)20:45

Gnuplot.py の -noend オプション など

Python(214)

Gnuplot.py で日本語を表示する (2) に引き続き、Gnuplot.py の話。 Gnuplot.py は Unix だと -persist オプションが使えて、スクリプトの実行後もウィンドウが残るようにできるが、Windows だとスクリプトが終了した時点でウィンドウが閉じられてしまう。けれども、Gnuplot を調べてみると、-noend というオプションが Windows 環境でも使えて、これを指定すれば Python のスクリプト終了後に Unix と同じように Gnuplot のウィンドウを残すことができることが分かった。 Gnuplot.py のパッケージの中の go_win32.py の中には test_persist という関数があって、これが常に 0 をリターンするので、-persist オプションを指定しても使えないよ '-persist is not supported under Windows!' とエラーで終了してしまう仕組みになっている。そして、-noend オプションを扱うコードは入っていないので、-noend オプションは Gnuplot.py からは使うことができない。 なので、test_persist と同様に test_noend を作って、GnuplotProcess をキーワード noend を受け付けるようにして、若干のコードを追加すると、-noend も使えるようになる。端的に言えば、次のように popen で nuplot_command('pgnuplot.exe) を呼び出しているところで -noend を入れたものも用意して、そこに noend が指定されたときに流れるようにすればよいということ。 - self.gnuplot = popen(GnuplotOpts.gnuplot_command, 'w') + self.gnuplot = popen('%s -noend' % GnuplotOpts.gnuplot_command, 'w') 乱暴にやるなら、上の箇所を変更すれば Python を終了した後でも、常時ウィンドウが残るようになる。けど、ちゃんと noend オプションを受け取れるように変更した方がよい。gp_win32.py と _Gnuplot.py に手を入れると noend オプションが使えるようになる。 それにしても、ウィンドウに表示するときには cp932 でスクリプトを書くと日本語が表示できて、png に出力するときには UTF-8 にしなきゃいけないというところが不便この上ない。Gnuplot に渡すところで文字変換を入れて、どちらで書いても大丈夫にしないと面倒でしょうがない。 debug=1 でデバグモードにしているとき、コマンドの画面に表示される文字化けは、 _Gnuplot.py class Gnuplot の__call__ に手を入れて強制的に cp932 で出力するようにしてみる。気分が少しよくなった。class _GnuplotFile __call__ にも手を入れて、指定したエンコーディングで出力できるようにした。これで、wgnuplot の画面で出力するときも、png に出力するときもソースコードは utf-8 でいけるようになった。 しかし、意外な問題として、画面に出すときは X軸の日本語が横向きに出力されるのに対して、png で出力するときは縦書きになること。不思議。。。。。 まあ、とりあえず何とか使えるような感じになってきたので引き続き使ってみようかと思う。

続きを読む

このブログでよく読まれている記事

もっと見る

総合記事ランキング

もっと見る