Python 动画绘图,一次一个点
Python Animated plotting, one point at a time
我有一组点[index, minimum],我想一次散布一个点i (index[i],minimum[i]) 这样我就可以看到情节的演变。
我想知道我该怎么做。我试过像这样的时间延迟:
plt.figure()
for i in range (np.size(index)):
plt.plot(index[i], minimum[i],'*')
plt.show()
time.sleep(1)
没用。
提前致谢。
可能看起来很愚蠢但是你导入了时间库吗?也没有缩进,你的代码真的是这样还是 copy/paste 失败了?
编辑:在评论中回答,使用plt.pause(1),见http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.pause
你应该使用 "animate" 绘图:
http://matplotlib.org/api/animation_api.html
还有一些很好的例子:
您必须使用 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)
我有一组点[index, minimum],我想一次散布一个点i (index[i],minimum[i]) 这样我就可以看到情节的演变。 我想知道我该怎么做。我试过像这样的时间延迟:
plt.figure()
for i in range (np.size(index)):
plt.plot(index[i], minimum[i],'*')
plt.show()
time.sleep(1)
没用。
提前致谢。
可能看起来很愚蠢但是你导入了时间库吗?也没有缩进,你的代码真的是这样还是 copy/paste 失败了?
编辑:在评论中回答,使用plt.pause(1),见http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.pause
你应该使用 "animate" 绘图:
http://matplotlib.org/api/animation_api.html
还有一些很好的例子:
您必须使用 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)