[3823] | 1 | #! /usr/bin/env python |
---|
| 2 | from ppclass import pp |
---|
| 3 | from netCDF4 import Dataset |
---|
| 4 | from numpy import * |
---|
| 5 | import numpy as np |
---|
| 6 | import matplotlib.pyplot as mpl |
---|
| 7 | from matplotlib.cm import get_cmap |
---|
| 8 | import pylab |
---|
| 9 | from matplotlib import ticker |
---|
| 10 | import matplotlib.colors as mcolors |
---|
| 11 | from mpl_toolkits.basemap import Basemap |
---|
| 12 | |
---|
| 13 | ############################ |
---|
| 14 | filename="diagfi2015.nc" |
---|
| 15 | nb_dataset=1 #change vect as well |
---|
| 16 | tint=["0,0.001"] #Time must be as written in the input file |
---|
| 17 | #zint=["0"] #alt in km |
---|
| 18 | #xarea="-180,179" |
---|
| 19 | #yarea="-90,90" |
---|
| 20 | #step=5 #step between each bin |
---|
| 21 | var="albedo" #variable |
---|
| 22 | var2="phisinit" |
---|
| 23 | ############################ |
---|
| 24 | |
---|
| 25 | nc=Dataset(filename) |
---|
| 26 | lat=nc.variables["lat"][:] |
---|
| 27 | lon=nc.variables["lon"][:] |
---|
| 28 | |
---|
| 29 | myvar = pp(file=filename,var=var,t=tint,compute="mean").getf() # get data to be changed according to selected variable |
---|
| 30 | myvar2 = pp(file=filename,var=var2,t=tint,compute="mean").getf() # get data to be changed according to selected variable |
---|
| 31 | print(('shape var1 =',shape(myvar))) |
---|
| 32 | print(('shape lat = ',shape(lat))) |
---|
| 33 | print(('lat = ',lat)) |
---|
| 34 | |
---|
| 35 | |
---|
| 36 | myvar=myvar |
---|
| 37 | myvar2=myvar2/0.6192/1000. # geopotential ==> altitude |
---|
| 38 | |
---|
| 39 | ################ |
---|
| 40 | # colorbar |
---|
| 41 | def make_colormap(seq): |
---|
| 42 | """Return a LinearSegmentedColormap |
---|
| 43 | seq: a sequence of floats and RGB-tuples. The floats should be increasing |
---|
| 44 | and in the interval (0,1). |
---|
| 45 | """ |
---|
| 46 | |
---|
| 47 | seq = [(None,) * 3, 0.0] + list(seq) + [1.0, (None,) * 3] |
---|
| 48 | print(seq) |
---|
| 49 | cdict = {'red': [], 'green': [], 'blue': []} |
---|
| 50 | for i, item in enumerate(seq): |
---|
| 51 | if isinstance(item, float): |
---|
| 52 | r1, g1, b1 = seq[i - 1] |
---|
| 53 | r2, g2, b2 = seq[i + 1] |
---|
| 54 | cdict['red'].append([item, r1, r2]) |
---|
| 55 | cdict['green'].append([item, g1, g2]) |
---|
| 56 | cdict['blue'].append([item, b1, b2]) |
---|
| 57 | print(cdict) |
---|
| 58 | return mcolors.LinearSegmentedColormap('CustomMap', cdict) |
---|
| 59 | ###### |
---|
| 60 | c = mcolors.ColorConverter().to_rgb |
---|
| 61 | #rvb1 = make_colormap([c('red'), c('violet'), 0.33, c('violet'), c('blue'), 0.66, c('blue')]) |
---|
| 62 | rvb1 = make_colormap([c('SaddleBrown'), c('violet'), 0.33, c('violet'), c('white'), 0.66, c('white')]) |
---|
| 63 | |
---|
| 64 | pp=(0.5450980392156862-0.15, 0.27058823529411763-0.05*3, 0.07450980392156863-0.01) |
---|
| 65 | rvb1 = make_colormap([pp,0.33, c('indianred'),0.71, c('lightcyan'),0.99,c('lightsalmon')]) |
---|
| 66 | #rvb1 = make_colormap([c('saddlebrown'),0.33, c('indianred'),0.66, c('white')]) |
---|
| 67 | ###### |
---|
| 68 | |
---|
| 69 | div=3. |
---|
| 70 | nbticksbar=3. |
---|
| 71 | #pal=get_cmap(name="Blues") |
---|
| 72 | pal=get_cmap(name="gist_earth_r") |
---|
| 73 | yticks=[-90,-60,-30,0,30,60,90] |
---|
| 74 | #xticks=[-180,-120,-60,0,60,120,180] |
---|
| 75 | xticks=[0,60,120,180,240,300,360] |
---|
| 76 | |
---|
| 77 | # changer les longitudes pour mettre TR au centre |
---|
| 78 | vec=shape(myvar) |
---|
| 79 | myvarbis=np.zeros(vec,dtype='f') |
---|
| 80 | myvar2bis=np.zeros(vec,dtype='f') |
---|
| 81 | # i lat : pas de changement |
---|
| 82 | # j lon : |
---|
| 83 | for i in range(vec[0]): |
---|
| 84 | for j in range(vec[1]): |
---|
| 85 | if j < int(vec[1]/2.) : |
---|
| 86 | myvarbis[i,j]=myvar[i,j+int(vec[1]/2)] |
---|
| 87 | myvar2bis[i,j]=myvar2[i,j+int(vec[1]/2)] |
---|
| 88 | else: |
---|
| 89 | myvarbis[i,j]=myvar[i,j-int(vec[1]/2)] |
---|
| 90 | myvar2bis[i,j]=myvar2[i,j-int(vec[1]/2)] |
---|
| 91 | |
---|
| 92 | lon=lon+180. |
---|
| 93 | |
---|
| 94 | |
---|
| 95 | mpl.figure(figsize=(17, 10)) |
---|
| 96 | |
---|
| 97 | c=mpl.contour(lon, lat, myvar2bis, 10,levels=[-3,-2,-1,-0.5,-0.2], colors = 'k', linewidths = 0.5) |
---|
| 98 | mpl.clabel(c, fmt='%2.1f', colors='k', fontsize=14) |
---|
| 99 | |
---|
| 100 | mpl.imshow(myvarbis,extent=[0,360,-90,90],cmap=rvb1) #,extend='both') |
---|
| 101 | |
---|
| 102 | #mpl.colorbar() |
---|
| 103 | mpl.ylabel('Latitude (deg)',labelpad=20,fontsize=29) |
---|
| 104 | mpl.xlabel('Longitude (deg)',labelpad=20, fontsize=29) |
---|
| 105 | mpl.xticks(xticks,fontsize=26) |
---|
| 106 | mpl.yticks(yticks,fontsize=26) |
---|
| 107 | mpl.grid() |
---|
| 108 | mpl.savefig('mapalbini.eps',dpi=200) |
---|
| 109 | mpl.savefig('mapalbini.png',dpi=200) |
---|
| 110 | mpl.show() |
---|
| 111 | |
---|
| 112 | |
---|