В настоящее время я запускаю простую анимацию FuncAnimation, которая анимирует серию изображений из файлов netCDF со спутника.Скрипт также включает в себя функцию паузы.Анимация работает нормально, но как только я пытаюсь наложить анимацию поверх Cartopy, код приводит к следующему: ![enter image description here](https://i.stack.imgur.com/NNGIW.png)
Вот что я делаю:
import argparse
from datetime import datetime
import cartopy.crs as ccrs
import os
import glob
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
import xarray
pause = False
def on_click(event):
global pause
pause = not pause
def animate(frame, ax):
if pause: return
file, date = frame
with xarray.open_dataset(file, decode_times=False) as dataset:
plt.cla()
dataset.CHL[0].plot(ax=ax, transform=ccrs.PlateCarree())
ax.set_title(date)
parser = argparse.ArgumentParser()
parser.add_argument('directory')
args = parser.parse_args()
path = os.path.join(args.directory, '*.nc')
files = glob.glob(os.path.join(args.directory, '*.nc'))
if not files:
raise ValueError('no net CDF files found in %s' % path)
frames = []
for file in files:
datestr = file[:len(file) - len('.nc')]
datestr = datestr[len(datestr) - len('2017-09-19'):]
date = datetime.strptime(datestr, '%Y-%m-%d')
if (args.start_date <= date <= args.end_date):
frames.append((file, datestr))
sorted_frames = sorted(frames, key=lambda k: k[1])
fig, ax = plt.subplots(subplot_kw={'projection': ccrs.NearsidePerspective(central_latitude=32.5, central_longitude=34)})
fig.suptitle('Title')
ax.gridlines(crs=None, draw_labels=False, xlocs=np.linspace(30, 36, 4),
ylocs=np.linspace(31, 35.5, 4))
ax.coastlines(resolution='110m', color='black')
ax.set_extent([30, 36, 31, 35.5]) #lon1, lon2, lat1, lat2
fig.canvas.mpl_connect('button_press_event', on_click)
anim = animation.FuncAnimation(fig, animate, sorted_frames, fargs=(ax,), interval=500, blit=False)
plt.show()
Любые мысли приветствуются.Я новичок в Cartopy, и у меня были проблемы с манипулированием данными netCDF.
Спасибо.