【发布时间】:2019-11-26 00:53:05
【问题描述】:
我使用 IPython Display 模块制作了相同的动画,但我希望它是交互式的,所以我尝试使用 matplotlib 动画模块。如果我使用%matplotlib notebook 运行以下命令,它只会返回一个空白屏幕。如果我用%matplotlib inline 运行它,它只返回第一帧。如果我在内联模式下运行并使用 IPython.dispay 中的 HTML 模块将其保存为 HTML5 视频,它会显示一个空白屏幕的视频,并且在其下方显示最后一帧(不是第一帧)。
下面是代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib import colors
from matplotlib import animation
import random
import cartopy.crs as ccrs
from cartopy.io.shapereader import Reader
from cartopy.feature import ShapelyFeature
fname = r'D:\Downloads\gadm36_USA_shp\gadm36_USA_2.shp'
fig = plt.figure()
ax = plt.axes((-82.65, 27.65, 0.595, 0.5), projection=ccrs.PlateCarree())
shape_feature = ShapelyFeature(Reader(fname).geometries(), ccrs.PlateCarree(), edgecolor='black')
ax.add_feature(shape_feature, alpha=0.5)
ax.set_extent([-82.65,-82.055,27.65,28.15])
cmap = colors.ListedColormap(['0000', 'green', 'yellow', 'orange', 'red'])
bounds = [0, .25, .5, .75, .9, 1]
norm = colors.BoundaryNorm(bounds, cmap.N)
pdf = plt.imshow(np.zeros((20,20)), cmap=cmap, extent=(-82.65,-82.055,27.65,28.15))
def search():
...
yield [op, norm]
...
def plot_search(args):
op = args[0]
updated_norm = args[1]
new_z = op.reshape((20,20))
pdf.set_norm(updated_norm)
pdf.set_data(new_z)
return [pdf]
ani = animation.FuncAnimation(fig, plot_search, frames=search, blit=True)
plt.plot()
search() 是一个生成器函数。即使我用list(search()) 包裹它,它仍然不起作用。
我是 matplotlib / cartopy 的新手,非常感谢任何帮助!
【问题讨论】:
标签: python matplotlib jupyter-notebook cartopy