6

私はこの質問と非常によく似た問題を抱えています

しかし、提案された解決策は私にはうまくいきません。

matplotlib アニメーション モジュールを使用して、アニメーション化された散布図を設定しました。これは、ライブで表示されているときに正常に機能します。aviファイルなどに保存したいと思います。これを行うために私が書いたコードはエラーになりませんが、それが生成するビデオには空白の軸のセットまたは黒い画面が表示されます。いくつかのチェックを行ったところ、データが実行され、図が更新されましたが、ビデオに保存されていません...

この質問で提案されているように、「animated=True」と「blit=True」を削除しようとしまし たが、問題は解決しませんでした。

関連するコードを以下に配置しましたが、必要に応じてさらに提供できます。これを機能させるために私が何をすべきかを誰かが提案できますか?

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)
4

1 に答える 1