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 | |
---|