我认为我在某处错过了一个非常简单/基本的代码,但如果有人能告诉我哪里出错了,我会很感激。
subplot_kw = dict(projection=ccrs.PlateCarree())
fig, ax = plt.subplots(1, 1, figsize=(12, 12), subplot_kw=subplot_kw)
def animate(i):
print(i)
filename = filenames[i]
print(filename)
output = read_data(filename)
lat = output['lat']
lon = output['lon']
ax.set_extent([lon_min, lon_max, lat_min, lat_max])
land_50m = cartopy.feature.NaturalEarthFeature('physical', 'land', '50m')
ocean_50m = cartopy.feature.NaturalEarthFeature('physical', 'ocean', '50m')
ax.add_feature(ocean_50m, zorder=0, facecolor=sns.xkcd_rgb['bluish'])
ax.add_feature(land_50m, zorder=0, edgecolor='black', facecolor=sns.xkcd_rgb['moss green'])
img1 = ax.scatter(lon, lat, c=lat, s=0.05, alpha=1)
return(img1)
anim = FuncAnimation(fig, animate, 3)
这几乎可以工作,但它会产生包含所有先前帧数据的动画,您可以在下面看到。如何清除帧之间的地图?
更新
我想我现在已经解决了这个问题,这与更新散点对象无关,而是每次都添加一个新的。
按照此处的示例https://matplotlib.org/examples/animation/rain.html,我使用了
img1.set_array(lat)
img1.set_offsets(np.vstack((lon, lat)).T)
更新了分散对象并且工作正常。