2012-04-09 10 views
1

私はgnuplotでグラフィックを生成するpythonスクリプトを持っています。Gnuplot:0行目:予想通りに機能する

のgnuplot>プロット ^ ライン0:機能が期待

g=Gnuplot.Gnuplot(persist=1) 
    g.title('Read&Write Performance') 
    g.xlabel('minutes') 
    g.ylabel('MB/s') 
    g('set term png') 
    g('set out') 
    g('set yrange [0:70]') 
    d1=Gnuplot.Data(self.time,self.list1,title="perfr", with_="line") 
    d2=Gnuplot.Data(self.time,self.list2,title="perfw", with_="line") 
    time.sleep(2) 
    g.hardcopy('bench.png',terminal = 'png') 
    g.reset() 

self.list1 = [12、15、17] self.list2 = [43、プロットするしかし、私はエラーをしました48、49]

なぜこのエラーが発生したのか分かりません。

感謝:)ソースで非常に短い見た後

+0

あなたは[Gnuplot.py](http://gnuplot-py.sourceforge.net/)について話していますか?私はそれをあまり使わなかったが、 'time.sleep'を呼び出すことは少し疑わしい。 gnuplotに送られるコードを見る方法はありますか?それが間違っているのが分かりやすいかもしれません。また、このプロジェクトはかなり長い間更新されていないようです。最近のgnuplotと互換性がないと考えられます。代わりに[matplotlib](http://matplotlib.sourceforge.net/)を使用する方が簡単かもしれません。 – James

+0

私はそのtime.sleepを読んで、gnuplotがコマンドを完全に実行するのを助けます。 – Matt

+0

実際にどこにでもプロットされるデータを送信しているようではありません。 'test.py'をすばやく読んでみると、そこに行があるべきだと思うようになります...' g.plot(d1) '...それらを一緒に表示したいのであれば、それは動作します... – mgilson

答えて

2

は、窓(例えばX11)にプロットを送信しないことg.plotを()ようだが、gnuplotが現在設定されてどこへプロットを送る。だから、(私が思う)最も簡単な解決策がある -

g('set terminal png') 
g('set output "bench.png"') 
g.plot(d1) #d1 should not be in "bench.png" 
#This might work to plot both datasets together ... g.plot(d1,d2) 

これは限りplotコマンドが発行されるたびのgnuplot-PYの内部は、gnuplotのスクリプトをリセットしないと動作するはずです。 __call__メソッドがこのようなAPIの重要な部分であるように思われるため、これが当てはまることは間違いありません。

+0

あなたは正しいです!それは単に完璧です。それはうまく動作します。 ありがとうございました:) – Matt

+0

問題ありません。喜んで助けてください。 – mgilson

+0

この回答は、BashスクリプトをOSXに変換する際の問題の1つを解決しました。つまり、端末に端末を設定して出力する必要があります。私はターミナルでgnuplotのプロットを直接実行しようとしていますが、コマンドがここで動作しない理由を理解できません。http://apple.stackexchange.com/q/178916/15504 –

関連する問題