Пример #1
0
def plotFrame(t):
    fig.clf()
    ax=plotAx()
    cplot=[]; gplot=[]; qplot=[]; bcplot=[]
    for mat1,ax1 in zip(mat,ax):
        #Time
        fig.suptitle(plotter.num2time(t).strftime('%Y-%b-%d %H:%M'))
        fig.subplots_adjust(bottom=.15,top=.85)
        
        it=np.interp(t,mat1['t'],np.arange(0,len(mat1['t'])))
        rho1=sw.pden(mat1['salt'][:,:,int(it)]*(1.-it%1)+mat1['salt'][:,:,int(it)+1]*(it%1),
                     mat1['temp'][:,:,int(it)]*(1.-it%1)+mat1['temp'][:,:,int(it)+1]*(it%1),
                     0.0*mat1['temp'][:,:,int(it)]*(1.-it%1)+0.0*mat1['temp'][:,:,int(it)+1]*(it%1) )
        salt1=mat1['salt'][:,:,int(it)]*(1.-it%1)+mat1['salt'][:,:,int(it)+1]*(it%1)
        it=np.interp(t,mat0['t'],np.arange(0,len(mat0['t'])))
        rho0=sw.pden(mat0['salt'][:,:,int(it)]*(1.-it%1)+mat0['salt'][:,:,int(it)+1]*(it%1),
                     mat0['temp'][:,:,int(it)]*(1.-it%1)+mat0['temp'][:,:,int(it)+1]*(it%1),
                     0.0*mat0['temp'][:,:,int(it)]*(1.-it%1)+0.0*mat0['temp'][:,:,int(it)+1]*(it%1) )
        salt0=mat0['salt'][:,:,int(it)]*(1.-it%1)+mat0['salt'][:,:,int(it)+1]*(it%1)
        #print([np.nanmax(rho1-rho0),np.nanmin(rho1-rho0)])
        cplot1=ax1.contourf(mat1['lon'],mat1['lat'],rho1-rho0,[tick1 for tick1 in np.arange(-5.0,5.01,.25) if np.abs(tick1)>1e-8],cmap=cmap,extend='both')
        bcplot1=ax1.contour(mat1['lon'],mat1['lat'],salt1,levels=[31.5],colors='k',linewidth=1)
        
        it=np.interp(t,mat1['t'],np.arange(0,len(mat1['t'])))
        u1=mat1['u'][:,:,int(it)]*(1.-it%1)+mat1['u'][:,:,int(it)+1]*(it%1)
        v1=mat1['v'][:,:,int(it)]*(1.-it%1)+mat1['v'][:,:,int(it)+1]*(it%1)
        it=np.interp(t,mat0['t'],np.arange(0,len(mat0['t'])))
        u0=mat0['u'][:,:,int(it)]*(1.-it%1)+mat0['u'][:,:,int(it)+1]*(it%1)
        v0=mat0['v'][:,:,int(it)]*(1.-it%1)+mat0['v'][:,:,int(it)+1]*(it%1)
        qplot1=plotter.add_uv2d(ax1,mat1['lon'],mat1['lat'],(u1-u0)*2,(v1-v0)*2)
        #print([np.nanmin(u1-u0),np.nanmax(u1-u0),np.nanmin(v1-v0),np.nanmax(v1-v0)])
    
        tLim1=3.*int((t-2)/3)+np.array([2.,5.])
        obsll=[(lon1,lat1) for (lon1,lat1,type1,t1) in zip(obs['lon'],obs['lat'],obs['type'],obs['t']) if type1==6 and tLim1[0]<=t1<=tLim1[1]]
        lon1,lat1=zip(*obsll)
        gplot1=ax1.plot(lon1,lat1,'.',color=(1.,.55,0.),markersize=2,fillstyle='full')
        
        #Colorbar
        fig.subplots_adjust(right=.8)
        cax=fig.add_axes([.82,.15,.02,.7])
        cbar=fig.colorbar(cplot1,cax=cax,orientation='vertical',spacing='proportional')
        cbar.set_ticks([tick1 for tick1 in np.arange(-5.0,5.01,1.)])
        cbar.formatter=ticker.FuncFormatter(lambda x,pos:'{:.1f}'.format(x))
        cbar.update_ticks()
        cbar.set_label(r'Density difference [$\mathrm{kg m^{-3}}$]')
        
        cplot.append(cplot1)
        gplot.append(gplot1)
        qplot.append(qplot1)
        bcplot.append(bcplot1)
        
        #plt.tight_layout()
        
    return cplot,qplot,gplot,bcplot
Пример #2
0
def plotFrame(t):
    fig.clf()
    ax=plotAx()
    cplot=[]; gplot=[]; qplot=[]
    for mat1,ax1 in zip(mat,ax):
        #Time
        #fig.suptitle(plotter.num2time(t).strftime('%Y-%b-%d %H:%M'))
        
        it=np.interp(t,mat1['t'],np.arange(0,len(mat1['t'])))
        vort1=mat1['vort'][:,:,int(it)]*(1.-it%1)+mat1['vort'][:,:,int(it)+1]*(it%1)
        cplot1=ax1.contourf(mat1['lon'],mat1['lat'],vort1,[tick1 for tick1 in np.arange(-1.4e-4,1.401e-4,.2e-4) if np.abs(tick1)>1e-8],cmap=cmap,extend='both')
        
        u1=mat1['u'][:,:,int(it)]*(1.-it%1)+mat1['u'][:,:,int(it)+1]*(it%1)
        v1=mat1['v'][:,:,int(it)]*(1.-it%1)+mat1['v'][:,:,int(it)+1]*(it%1)
        qplot1=plotter.add_uv2d(ax1,mat1['lon'],mat1['lat'],u1,v1)
    
        tLim1=3.*int((t-2)/3)+np.array([2.,5.])
        obsll=[(lon1,lat1) for (lon1,lat1,type1,t1) in zip(obs['lon'],obs['lat'],obs['type'],obs['t']) if type1==6 and tLim1[0]<=t1<=tLim1[1]]
        lon1,lat1=zip(*obsll)
        gplot1=ax1.plot(lon1,lat1,'.',color=(1.,.55,0.),markersize=5,fillstyle='full')
        
        ax1.set_title(mat1['name'])
        
        #Colorbar
        fig.subplots_adjust(right=.8)
        cax=fig.add_axes([.82,.15,.02,.7])
        cbar=fig.colorbar(cplot1,cax=cax,orientation='vertical',spacing='proportional')
        cbar.set_ticks([tick1 for tick1 in np.arange(-1.4e-4,1.401e-4,.2e-4)])
        cbar.formatter=ticker.FuncFormatter(lambda x,pos:'{:.1f}'.format(x*1e4))
        cbar.update_ticks()
        cbar.set_label(r'Rel. vorticity [$10^{-4}\,\mathrm{s^{-1}}$]')
        
        cplot.append(cplot1)
        gplot.append(gplot1)
        qplot.append(qplot1)
        
        #plt.tight_layout()
        
    return cplot,qplot,gplot
Пример #3
0
def plotFrame(ax):
    cplot = []
    qplot = []
    bcplot = []

    for ax1, t in zip(ax, mat1['t']):
        #Time
        fig.subplots_adjust(bottom=.15, top=.85)

        it = np.interp(t, mat1['t'], np.arange(0, len(mat1['t'])))
        it2 = np.minimum(int(it) + 1, len(mat1['t']) - 1)
        print([it, it2])
        salt1 = mat1['salt'][:, :, int(it)] * (
            1. - it % 1) + mat1['salt'][:, :, it2] * (it % 1)
        #print([np.nanmax(rho1),np.nanmin(rho1)])
        cplot1 = ax1.contourf(mat1['lon'],
                              mat1['lat'],
                              salt1,
                              [tick1 for tick1 in np.arange(24., 33.01, .5)],
                              cmap=cmap,
                              extend='min')
        bcplot1 = ax1.contour(mat1['lon'],
                              mat1['lat'],
                              salt1,
                              levels=[31.5],
                              colors='k',
                              linewidth=1)

        it = np.interp(t, mat1['t'], np.arange(0, len(mat1['t'])))
        u1 = mat1['u'][:, :, int(it)] * (
            1. - it % 1) + mat1['u'][:, :, it2] * (it % 1)
        v1 = mat1['v'][:, :, int(it)] * (
            1. - it % 1) + mat1['v'][:, :, it2] * (it % 1)
        qplot1 = plotter.add_uv2d(ax1, mat1['lon'], mat1['lat'], u1, v1)
        #print([np.nanmin(u1-u0),np.nanmax(u1-u0),np.nanmin(v1-v0),np.nanmax(v1-v0)])

        #Add glider
        obsll = [(lon1, lat1)
                 for (lon1, lat1, type1,
                      t1) in zip(obs['lon'], obs['lat'], obs['type'], obs['t'])
                 if type1 == 6]
        lon1, lat1 = zip(*obsll)
        gplot1 = ax1.plot(lon1,
                          lat1,
                          '.',
                          color=(1., .55, 0.),
                          markersize=2,
                          fillstyle='full')

        ax1.set_title(plotter.num2time(t).strftime('%m/%d/%y'))
        #Colorbar
        fig.subplots_adjust(right=.8)
        cax = fig.add_axes([.82, .15, .02, .7])
        cbar = fig.colorbar(cplot1,
                            cax=cax,
                            orientation='vertical',
                            spacing='proportional')
        cbar.set_ticks([tick1 for tick1 in np.arange(24.0, 33.01, 1.)])
        cbar.formatter = ticker.FuncFormatter(
            lambda x, pos: '{:.0f}'.format(x))
        cbar.update_ticks()
        cbar.set_label(r'Salinity [$\mathrm{ppt}$]')

        cplot.append(cplot1)
        qplot.append(qplot1)
        bcplot.append(bcplot1)

        #plt.tight_layout()

    return cplot, qplot, bcplot