2012-04-09 96 views
1

我有一個python腳本,它使用gnuplot生成一個圖形。但是我有一個錯誤: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 2012-04-09 11:03:20

+0

我讀過time.sleep,幫助gnuplot完全執行命令。 – Matt 2012-04-09 11:38:45

+0

它似乎並不像你實際發送的數據被繪製在任何地方。仔細閱讀一下'test.py'後,我認爲你應該在那裏有一條線,比如......'g.plot(d1)'...如果你想讓它們一起出現,我不知道它的工作原理... – mgilson 2012-04-09 12:24:54

回答

2

一個非常簡短看看源後,似乎g.plot()的情節不發送到一個窗口(如x11),但到哪裏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) 

這應該只要gnuplot的-PY的內部不復位每當plot命令發出gnuplot的腳本工作。我非常懷疑這種情況,因爲__call__方法似乎是API的重要組成部分。

+0

你是對的mgilson!它非常完美。它工作正常。 非常感謝:) – Matt 2012-04-09 16:42:08

+0

沒問題。樂意效勞。 – mgilson 2012-04-09 19:20:30

+0

這個答案解決了我在將Bash腳本轉換爲OSX時遇到的一個問題,即我需要在終端和輸出中設置終端。我試圖直接在終端上運行gnuplot的圖,但不明白爲什麼命令在這裏不起作用http://apple.stackexchange.com/q/178916/15504 – 2015-03-30 13:19:53