我想用python中的matplotlib创建一个动画。由于动画数据是两个参数(时间、实体数)的函数,我有一个想法是使用2作为循环。代码如下:
import time
import matplotlib as mpl
from matplotlib import pyplot as plt
from matplotlib import pylab as plb
# set up figure for plotting:
fig = plt.figure()
ax = fig.add_subplot(111)
# plot limits
ax.set_xlim(-(max(q0) + bodies[-1].L), +(max(q0) + bodies[-1].L))
ax.set_ylim(-(max(q0) + bodies[-1].L), +(max(q0) + bodies[-1].L))
# colors
colors = ['b', 'g', 'c']
for i_t in range(0, np.shape(t)[1]): #t is an one column matrix
for i in range(0, N):
ax.plot(x_matrix[i_t, i], y_matrix[i_t, i], 's', color=colors[i])
plt.draw()
plt.show()
问题是代码只生成一个绘图,但包含所有动画点。我希望将动画绘制为一个时间值(计数器I)和一个窗口中的所有实体(计数器I)作为电影,以便在下一个时间步删除上一个绘图。
我已将您建议的代码更改为:
for i_t in range(0, np.shape(t)[1]):
for i in range(0, N):
ax.clear()
ax.plot(x_matrix[i_t, i], y_matrix[i_t, i], 's', color=colors[i])
plt.pause(0.001)
plt.draw()
但后来我发现一个错误:
C:\Python27\lib\site-packages\matplotlib\backend_bases.py:2292: MatplotlibDeprecationWarning: Using default event loop until function specific to this GUI is implemented warnings.warn(str, mplDeprecation)
这并不可怕,但当运行代码时,必须一起绘制的点(计数器i)被分开绘制,因此看起来像闪烁的点(如果你知道我的意思)。
有什么建议。我想我已经接近解决方案了,但是仍然需要finishig touch来让代码工作。我希望这能像我想象的那样完成,这样我就不用用不同的方法来解决问题了。
我已经解决了这个问题。解决办法是(如果有人需要的话):
我本来会提前发帖的,但作为一个新用户,我不得不等待8个小时来回答我自己的问题。
将代码的最后一部分更改为:
通过更改
plt.pause(0.001)
中的数字来调整动画速度。相关问题 更多 >
编程相关推荐