尝试使用 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')
命令查看网格的完整图像):
xmin,ymin,xmax,ymax = -2, -2, 2, 2
length = 0.1
wide = 0.1
columns = list(np.arange(int(np.floor(xmin)), int(np.ceil(xmax)), wide))
rows = list(np.arange(int(np.floor(ymin)), int(np.ceil(ymax)), length))
rows.reverse()
grid = gpd.GeoDataFrame(columns = ['geometry'])
for row in rows:
for column in columns:
grid.loc[len(grid)]=Polygon([(column, row), (column + wide, row), (column + wide, row - length), (column, row - length)])
动画每个多边形的外观的功能:
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 Notebook 中会以我预期的方式(或多或少)显示动画:
%matplotlib
fig = plt.figure()
a = animation.FuncAnimation(fig, update_grid_next, interval=50, frames = range(75))
一个接一个的多边形出现在图上。但是,当我尝试使用 保存视频时a.save(r'C:\Users\fasbo\k.mp4')
,matplotlib 会创建具有惊人数量的记录/捕获帧的静态图像。