Reputation: 23
Im trying to create an animation using the following code but I can't get it to work.
def plotSimulation(currentState, startState):
import matplotlib.pyplot as plt
import matplotlib.animation as ani
import numpy as np
import matplotlib.patches as mpatches
import matplotlib.collections as collections
fig1 = plt.figure()
ax = plt.subplot()
numberOfFrames = currentState.shape[2]
frames = []
for frame in np.arange(numberOfFrames):
carPatches = []
for car in range(0, currentState.shape[0]):
carPatches.append(mpatches.Rectangle([currentState[car,0,frame],currentState[car,1,frame]], startState[car, 2], startState[car, 3], angle=startState[car, 4]))
carCollection = collections.PatchCollection(carPatches)
frames.append((carCollection,))
simulationAnimation = ani.ArtistAnimation(fig1, frames, interval=50, repeat_delay=300, blit=False)
plt.show()
I have tried to copy from this example http://matplotlib.org/examples/animation/basic_example.html
The animation showing in fig2
But when I try to run my animation i get:
File "...plotIteration.py", line 24, in plotSimulation
simulationAnimation = ani.ArtistAnimation(fig1, frames, interval=50, repeat_delay=300, blit=False)
File ".../python/matplotlib/animation.py", line 934, in __init__
TimedAnimation.__init__(self, fig, *args, **kwargs)
File ".../python/matplotlib/animation.py", line 878, in __init__
*args, **kwargs)
File ".../python/matplotlib/animation.py", line 559, in __init__
self._init_draw()
File ".../Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/animation.py", line 948, in _init_draw
ax.figure.canvas.draw()
AttributeError: 'NoneType' object has no attribute 'figure'
Upvotes: 2
Views: 796
Reputation: 69116
I think the problem is that you have created your PatchCollections
, but haven't added them to the axes. You should be able to do this with ax.add_collection
Try changing the line appending carCollection
to frames
to something like:
frames.append(ax.add_collection(carCollection))
Upvotes: 2