Python Matplotlib动画保存方法返回创建具有意外帧数的静态图像

Python Matplotlib动画保存方法返回创建具有意外帧数的静态图像,python,matplotlib,geopandas,matplotlib-animation,Python,Matplotlib,Geopandas,Matplotlib Animation,尝试使用matplotlib的动画模块来创建网格更改的动画。 使用的图书馆 import numpy as np import geopandas as gpd from shapely.geometry import Polygon import matplotlib.animation as animation import matplotlib.pyplot as plt 使用geopandas创建网格(使用grid.plot(edgecolor='white')命令可以看到网格的完整

尝试使用matplotlib的动画模块来创建网格更改的动画。 使用的图书馆

import numpy as np
import geopandas as gpd
from shapely.geometry import Polygon

import matplotlib.animation as animation
import matplotlib.pyplot as plt
使用geopandas创建网格(使用
grid.plot(edgecolor='white')命令可以看到网格的完整图像):

用于为每个多边形的外观设置动画的函数:

def update_grid_next(curr):
    ax = plt.gca()

    ax.axis([-2, 2, -2.1, 1.9])
    ax.annotate('n = %s'%curr, [-2, -2])


    ax.plot(*grid.geometry[curr].exterior.xy, color = 'b')
    ax.fill(*grid.geometry[curr].exterior.xy, alpha=0.5, fc='r', ec='none')
当我运行以下代码时,动画会以我预期的方式(或多或少)显示在Jupyter笔记本中:

一个接一个的多边形出现在绘图上。
但是,当我尝试使用
a.save(r'C:\Users\fasbo\k.mp4')
保存视频时,matplotlib创建的图像记录/捕获的帧数惊人。

我怀疑您可能需要使用
FuncAnimation
中的
init_func
参数,这是用于绘制清晰帧的函数。更新功能旨在更新图形中的对象,而不是打印更多对象


是一个关于如何使用update和init函数的小教程。如果您正在学习如何制作动画,我建议您先从简单的内容开始。

我怀疑您可能需要使用
FuncAnimation
中的
init_func
参数,这是用于绘制清晰帧的函数。更新功能旨在更新图形中的对象,而不是打印更多对象

是一个关于如何使用update和init函数的小教程。如果你正在学习如何制作动画,我建议你先从一些简单的东西开始

def update_grid_next(curr):
    ax = plt.gca()

    ax.axis([-2, 2, -2.1, 1.9])
    ax.annotate('n = %s'%curr, [-2, -2])


    ax.plot(*grid.geometry[curr].exterior.xy, color = 'b')
    ax.fill(*grid.geometry[curr].exterior.xy, alpha=0.5, fc='r', ec='none')
%matplotlib
fig = plt.figure()
a = animation.FuncAnimation(fig, update_grid_next, interval=50, frames = range(75))