2017-03-27 116 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)