我想在 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_t)和所有物体(计数器 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:使用默认事件循环,直到实现特定于此 GUI 的函数 warnings.warn(str, mplDeprecation)
这并不可怕,但是在运行代码时,必须将必须绘制在一起的点(计数器 i)分开绘制,因此它看起来像闪烁点(如果你知道我的意思的话)。
有什么建议么。我想我已经接近解决方案了,但仍然需要完成操作才能使代码正常工作。我希望这可以按照我想象的方式完成,这样我就不必用不同的方法解决问题。