2017-03-27 277 views
0

我有一組點[指數,最小值],我希望一次分散一個點(index [i],minimum [i]),這樣我就可以看到情節的演變。 我想知道我該怎麼做。我嘗試過一段時間延遲,例如:Python動畫繪圖,一次一個點

plt.figure() 
    for i in range (np.size(index)): 
     plt.plot(index[i], minimum[i],'*') 
     plt.show()  
     time.sleep(1) 

它沒有工作。
在此先感謝。

+0

'它沒有工作'的意思?你能發佈完整的錯誤嗎? – Gianluca

+0

沒有錯誤。它沒有工作意味着,繪圖過程不會逐步顯示。我只看到最後的情節。 – MaximeMusterFrau

回答

0

可能看起來很愚蠢,但您是否導入了時間庫?也沒有縮進,你的代碼真的是這樣或者這是一個複製/粘貼失敗?

編輯:答案在註釋中,使用plt.pause(1),見http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.pause

+0

是的,我做到了。事實上,複製粘貼失敗是。謝謝。 – MaximeMusterFrau

+0

你試過用plt.pause(1)嗎? http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.pause – valentinRssl

+0

謝謝。它的工作原理與plt.pause(1)一樣。 – MaximeMusterFrau

0

您必須使用nan數組來繪製空值,然後更新您的數組隨着時間的推移。這裏是一個工作示例:

import numpy as np 
import matplotlib.pyplot as plt 
import time 

nbPoints = 100 

nanArray = np.array(np.ones(nbPoints)) 
nanArray[:] = np.nan 

index = range(nbPoints) 
minimum = np.random.randint(5, size=nbPoints) 
minimumPlotData = nanArray 

fig = plt.figure() 
ax = plt.subplot(111) 
ax.set_xlim(0, nbPoints) 
ax.set_ylim(min(minimum), max(minimum)) 
li, = ax.plot(index,minimumPlotData, marker = 'o', linestyle="") 

fig.canvas.draw() 
plt.show(block=False) 
for i in range(nbPoints): 
    minimumPlotData[i]=minimum[i] 
    li.set_ydata(minimumPlotData) 
    fig.canvas.draw() 
    time.sleep(1)