0

私はgnuplotが初めてです。私はユニックスを使用しています。

コマンド/エラーとその出力が端末に表示されますが、保存のためにファイルにも保存したいと思います。

gnuplot には保存コマンドがありますが、モジュールによって指定された最後のプロットまたは splot コマンドと最終設定のみを保存します。

設定「A」で線をプロットし、計算を行った後、設定「B」で別の線を再プロットしたとします。

gnuplot.save() コマンドは、最後のコマンドと最新の設定のみを保存します。発行されたすべてのコマンドを保存するにはどうすればよいですか?

親切に助けて...

4

2 に答える 2

1

私は gnuplot-py にあまり詳しくありませんが、コマンドを実行するときにターミナルにコマンドを書き込む場合は、シェルのリダイレクトを使用できます。

python myPythonScriptWithGnuplot.py > commandfile.gp  #redirect stdout
python myPythonScriptWithGnuplot.py 2> commandfile.gp  #redirect stderr

もちろん、Python から端末に他のことを書き込んでいる場合、これは役に立ちません...

ただし、gnuplot-py は一時 FIFO を介してデータを gnuplot に送信することに注意してください (とにかくそう思います)。したがって、データをプロットしている場合 (たとえば、リスト、numpy 配列など... のような関数ではありません"sin(x)")、データをプロットしようとすると、FIFO がシステムから削除され、プロット コマンドが失敗する可能性があると不平を言います。 'データファイルが見つかりません。

編集

ソースを(簡単に)見た後、いくつかのオプションがあるようです。最初のオプション:debug=1コンストラクターに渡します (既にこれを行っている可能性があります)。これにより、コマンドが標準エラーに書き込まれます。少し (または多く) のシェル マジックを使用すると、さまざまな出力ストリームを分離できます。これは、bash で動作する端末に出力を残しながら、コマンドから stderr をファイルに入れるレシピです (私は bash 4.1.5 を使用していますが、これはしばらく前からあったと確信しています)。

((command 3>&1 1>&2 2>&3 ) | tee command_stderr.log ) 3>&1 1>&2 2>&3
          #swap stderr/out  
                             #tee puts data in output file and to terminal
                                                      #swap stderr/stdout again.

(誰かがそれを知っていれば、この出力ストリームのスワッピングを行うためのよりクリーンな方法を見たいと思います...)

Gnuplotまたは、コンストラクターにファイル名を渡すこともできます。これにより、コマンドがそのファイルに書き込まれます。私が知る限り、コマンドをファイルと gnuplot パイプに書き込む方法はありません。ただし、いつでも複数のGnuplotインスタンスを起動し、メイン インスタンスを介してコマンドをファイルに書き込むことができます。その後、プロット コマンドを書き込むたびに、2 番目のインスタンスにload "filename". もちろん、この方法を使用する場合は、おそらくデータがinlined であることを指定する必要があります。

3 番目のオプションは、gnuplot-py を放棄して pyGnuplot を支持することです。なぜなら、私はまだ pyGnuplot を積極的に開発しているためです。その後、何かがうまくいかない場合、または機能を追加したい場合は、私に知らせてください。 )

于 2012-05-21T17:52:54.580 に答える
0

Python以外の答えは、「スクリプト」コマンドを使用することです。

于 2012-05-21T17:52:37.937 に答える