2016-05-16 29 views
1

我的問題是怎麼樣的「過於寬泛」類別的,但我已經一直在尋找小時,我的問題仍然存在。pyplot對象和行爲的解釋

我使用我自己的繪圖儀功能在for循環中製作了多個(比如10個)圖表,然後使用savefig()保存它們。之後,我想製作另一個情節並展示它。無論我做什麼,我仍然可以獲得9或10個有效/空的地塊。

for ...: 
    pyplot = Plotter.plotStuff(data[i]) 
    pyplot.savefig(path) 
    pyplot.clf() 
pyplot.plot(new_data) 
pyplot.show() # showing additional plots 

我的主要問題是:我怎麼能「重新開始」並抹去我之前的地塊?我試過pyplot.clf()pyplot.cla()pyplot.hold(False),沒有運氣。

另外,可能有人請解釋pyplot /圖/插曲動態是如何工作的,當它做一個新的情節,其中存儲我的數據/圖以前?我之前有過「額外的空洞情節」問題,但是我重新排列了我的命令直到它工作,但我仍然不知道爲什麼。

例如,我有figure(), subplots_adjust(), plot(), xticks(), yticks()命令(以該順序)。應該是什麼順序,爲什麼?

非常感謝,我正在拉我的頭髮。

+1

在這一行中:'pyplot = Plotter.plotStuff(data [i])'你分配在'pyplot'的頂部,所以如果你期待'pyplot'包含與'matplotlib.pyplot '模塊你會感到失望。如果不知道什麼樣的對象'Plotter.plotStuff'返回,我不能說更多。 –

+0

@ali_m'plotStuff'function包含'pyplot.figure()',...,'pyplot.yticks()'我提到的,然後'返回pyplot'。實際上,當我在下面的答案中提到'@ pmmlot.close()'作爲@cmmnn時,它正在起作用,並且使用修改過的'pyplot'模塊來定義'pyplot'模塊並不是問題。仍然重新命名它只是爲了確保。 – Rolf

+0

@ali_m對於pyplot行爲:它看起來類似於xlwings,並且您使用'pyplot.figure(number)'選擇了該圖。然後你只需調用像pyplot.function()這樣的pyplot函數,它就會對所選圖形產生影響。但是,如果我試圖改變顏色循環,按照以下方式,它會繪製一個空的數字4,並將圖放在圖5上:'pyplot.figure(4),ax = pyplot.subplots()[1], ax.set_prop_cycle(cycler('color',['y','r'])),pyplot.plot(data)' – Rolf

回答

1

我決不是一個專家,但是從我的理解您使用figure()打開創建一個新的圖形對象。你可以給這個函數一個參數來識別你的不同數字,即figure(7),否則他們只是我猜的枚舉。

然後你可以把東西到你的身材對象,後來上你的身材使用savefig(), draw(), show()。 您也可以使用close()關閉您創建的最後一個數字或再次使用標識符。

因此,對於您的具體問題,我認爲一個close()在的結束for循環應該做的伎倆。

+0

謝謝,這工作!但是,我仍然不確定所有事情,請參閱我對@ali_m的回覆,也許您可​​以提供幫助。 – Rolf

+0

很高興我可以有一些幫助,我很驚訝沒有matplotlib專家來到這裏,並給出了更好的答案。我總是點擊matplotlib縮略圖庫,直到找到需要的東西,並且只是想一個快速的修復工作,直到matplotlib專家出現並啓發我們更深入的理解爲止。 – cmmnn