#! /usr/bin/env python from netCDF4 import Dataset from numpy import * import numpy as np import matplotlib.pyplot as mpl from matplotlib.cm import get_cmap import pylab from matplotlib import ticker import matplotlib.colors as colors import datetime from mpl_toolkits.basemap import Basemap, shiftgrid from FV3_utils import * ############################ step_begin = 2000 step_end = 2015 var="temperature" #variable # tint=["30,37"] #Time must be as written in the input file tint=None #Time must be as written in the input file xarea="0,1" yarea="0,1" prefix="Xhistins" suffix="_A.nc" filename=f"../../{prefix}{step_begin}{suffix}" nc1=Dataset(filename) lat=getvar(nc1,"latitude") lon=getvar(nc1,"longitude") alt=getvar(nc1,"altitude") # tim=getvar(nc1,"Time") myvar=getvar(nc1,var,tint,xarea,yarea) myvar=myvar[:,:,0,0] print((shape(myvar))) # nb of day nbday=3 # nb of time: nbtime=size(myvar[:,0]) print(nbtime) # nb time step /day nbstep=50 # nb alt nbalt=size(alt) print(nbalt) #meanvar=np.zeros((nbday,nbalt),dtype='f') meanvar=np.zeros((nbtime-2*nbstep,nbalt),dtype='f') anovar=np.zeros((nbtime-2*nbstep,nbalt),dtype='f') # pour chaque jour : calcul moyenne diurne for i in range(nbtime-2*nbstep): #i=i+nbstep/2 meanvar[i,:]=np.mean(myvar[nbstep//2+i:nbstep+nbstep//2+i,:],axis=0) #for i in range(nbday): # meanvar[i,:]=np.mean(myvar[0:8,:],axis=0) # pour chaque time : calcul anomaly le dernier time est pour autre jour for i in range(nbtime-2*nbstep): #index=int(i/nbstep) anovar[i,:]=myvar[nbstep+i,:]-meanvar[i,:] print((meanvar[:,:])) print((myvar[0,:])) # print((myvar[8,:])) mpl.figure(figsize=(20, 10)) font=26 #pal=get_cmap(name="RdYlBu_r") # pal=get_cmap(name="Spectral_r") lev=np.linspace(-0.1,0.1,10) #xticks=[-90,-60,-30,0,30,60,90] #yticks=np.linspace(0,240,9) tim=np.arange(nbtime-2*nbstep)/floor(nbstep) #tim=np.arange(nbtime)/nbstep print((shape(tim), shape(alt),shape(anovar))) CF=mpl.contourf(tim,alt,np.transpose(anovar),lev,cmap="coolwarm",extend='both') cbar=mpl.colorbar(CF,shrink=1, format="%1.2f") cbar.ax.set_title("[K]",y=1.04,fontsize=font) for t in cbar.ax.get_yticklabels(): t.set_fontsize(font) #vect=lev #CS=mpl.contour(lat,alt,myvar,vect,colors='k',linewidths=0.5) #### inline=1 : values over the line #mpl.clabel(CS, inline=1, fontsize=20, fmt='%1.0f',inline_spacing=1) #mpl.title('Latitude ='+str(tintstr[i]),fontsize=font) mpl.ylabel('Altitude (km)',labelpad=10,fontsize=font) mpl.xlabel('Time (Pluto days)',labelpad=10, fontsize=font) #mpl.xticks(xticks,fontsize=font) mpl.xticks(fontsize=font) #mpl.yticks(yticks,fontsize=font) mpl.yticks(fontsize=font) pylab.ylim([0,150000]) # pylab.ylim([0,np.max(alt)]) mpl.savefig('tempanom.eps',dpi=200) mpl.savefig('tempanom.png',dpi=200) mpl.show()