I am having a very similar problem to this question
but the suggested solution doesn't work for me.
I have set up an animated scatter plot using the matplotlib animation module. This works fine when it is displaying live. I would like to save it to an avi file or something similar. The code I have written to do this does not error out but the video it produces just shows a blank set of axes or a black screen. I've done several checks and the data is being run and figure updated it's just not getting saved to video...
I tried removing "animated=True" and "blit=True" as suggested in this question but that did not fix the problem.
I have placed the relevant code below but can provide more if necessary. Could anyone suggest what I should do to get this working?
def initAnimation(self):rs, cfgs = next(self.jumpingDataStreamIterator) #self.scat = self.axAnimation.scatter(rs[0], rs[1], c=cfgs[0], marker='o')self.scat = self.axAnimation.scatter(rs[0], rs[1], c=cfgs[0], marker='o', animated=True)return self.scat,def updateAnimation(self, i):"""Update the scatter plot."""rs, cfgs = next(self.jumpingDataStreamIterator)# Set x and y data...self.scat.set_offsets(rs[:2,].transpose()) #self.scat = self.axAnimation.scatter(rs[0], rs[1], c=cfgs[0], animated=True)# Set sizes...#self.scat._sizes = 300 * abs(data[2])**1.5 + 100# Set colors..#self.scat.set_array(cfgs[0])# We need to return the updated artist for FuncAnimation to draw..# Note that it expects a sequence of artists, thus the trailing comma.matplotlib.pyplot.draw()return self.scat,def animate2d(self, steps=None, showEvery=50, size = 25):self.figAnimation, self.axAnimation = matplotlib.pyplot.subplots()self.axAnimation.set_aspect("equal")self.axAnimation.axis([-size, size, -size, size])self.jumpingDataStreamIterator = self.jumpingDataStream(showEvery)self.univeseAnimation = matplotlib.animation.FuncAnimation(self.figAnimation, self.updateAnimation, init_func=self.initAnimation,blit=True)matplotlib.pyplot.show()def animate2dVideo(self,fileName=None, steps=10000, showEvery=50, size=25):self.figAnimation, self.axAnimation = matplotlib.pyplot.subplots()self.axAnimation.set_aspect("equal")self.axAnimation.axis([-size, size, -size, size])self.Writer = matplotlib.animation.writers['ffmpeg']self.writer = self.Writer(fps=1, metadata=dict(artist='Universe Simulation'))self.jumpingDataStreamIterator = self.jumpingDataStream(showEvery)self.universeAnimation = matplotlib.animation.FuncAnimation(self.figAnimation, self.updateAnimation, scipy.arange(1, 25), init_func=self.initAnimation)self.universeAnimation.save('C:/universeAnimation.mp4', writer = self.writer)