funcanimation中的Cartopy会导致图像重叠

时间:2018-12-05 11:18:15

标签: python python-xarray cartopy

我目前正在运行一个简单的FuncAnimation,该动画可以对来自卫星的netCDF文件中的一系列图像进行动画处理。该脚本还包含暂停功能。动画工作正常,但是一旦我尝试将动画覆盖在Cartopy上,代码将导致以下结果: enter image description here

这就是我在做什么:

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数据进行操作时遇到了问题。

谢谢。

0 个答案:

没有答案