source: trunk/LMDZ.PLUTO/util/script_figures/meanzonalwind.py @ 3833

Last change on this file since 3833 was 3833, checked in by afalco, 4 days ago

Pluto: updated plots scripts.
Fixed some issues with reading XIOS, etc.
Included display_netcdf.py tool from Mars PCM.
AF

  • Property svn:executable set to *
File size: 2.9 KB
Line 
1#! /usr/bin/env python
2from    netCDF4               import    Dataset
3from    numpy                 import    *
4import  numpy                 as        np
5import  matplotlib.pyplot     as        mpl
6from matplotlib.cm import get_cmap
7import pylab
8import matplotlib.colors as mcolors
9import colorsys
10from FV3_utils import *
11from input import *
12
13############################
14# folder="../"
15filename1=name+"_A.nc"
16var="u" #variable
17tint=[30,32] #Time must be as written in the input file
18xarea=[-180,179]
19
20nc1=Dataset(filename1)
21
22lat=getvar(nc1,"latitude")
23lon=getvar(nc1,"longitude")
24alt=getvar(nc1,"altitude")
25tim=getvar(nc1,"Time")
26############################
27
28def make_colormap(seq):
29    """Return a LinearSegmentedColormap
30    seq: a sequence of floats and RGB-tuples. The floats should be increasing
31    and in the interval (0,1).
32    """
33
34    seq = [(None,) * 3, 0.0] + list(seq) + [1.0, (None,) * 3]
35    print(seq)
36    cdict = {'red': [], 'green': [], 'blue': []}
37    for i, item in enumerate(seq):
38        if isinstance(item, float):
39            r1, g1, b1 = seq[i - 1]
40            r2, g2, b2 = seq[i + 1]
41            cdict['red'].append([item, r1, r2])
42            cdict['green'].append([item, g1, g2])
43            cdict['blue'].append([item, b1, b2])
44    print(cdict)
45    return mcolors.LinearSegmentedColormap('CustomMap', cdict)
46
47def diverge_map(high, low):
48    '''
49    low and high are colors that will be used for the two
50    ends of the spectrum. they can be either color strings
51    or rgb color tuples
52    '''
53    c = mcolors.ColorConverter().to_rgb
54    if isinstance(low, str): low = c(low)      #si low=string (color)
55    if isinstance(high, str): high = c(high)
56    print(high)
57    return make_colormap([low, c('white'), 0.55, c('white'),0.65, c('white'), high])
58
59
60hh=(255,99,71)
61hh=(hh[0]/255,hh[1]/255,hh[2]/255)
62print(hh)
63h=hh #(0.565, 0.392, 0.173)
64l=(0.094, 0.310, 0.635)
65rvb1=diverge_map(h,l)
66
67myvar=getvar(nc1,var,tint,xarea,lon,t_mean=True,l_mean=True)
68
69mpl.figure(figsize=(20, 10))
70
71font=26
72
73#pal=rvb1 #get_cmap(name="RdYlBu_r")
74#pal=get_cmap(name="Spectral_r")
75pal=get_cmap(name="rainbow")
76lev=np.linspace(-20,10,31)
77
78xticks=[-90,-60,-30,0,30,60,90]
79#yticks=np.linspace(0,240,9)
80
81CF=mpl.contourf(lat,alt,myvar,lev,cmap=pal,extend='both')
82cbar=mpl.colorbar(CF,shrink=1, format="%1.2f")
83#cbar.ax.set_title("[K]",y=1.04,fontsize=font)
84for t in cbar.ax.get_yticklabels():
85      t.set_fontsize(font)
86
87vect=lev
88CS=mpl.contour(lat,alt,myvar,vect,colors='k',linewidths=0.5)
89#### inline=1 : values over the line
90mpl.clabel(CS, inline=1, fontsize=20, fmt='%1.0f',inline_spacing=1)
91
92mpl.title('Zonal wind (m/s)',fontsize=font)
93mpl.ylabel('Altitude (km)',labelpad=10,fontsize=font)
94mpl.xlabel('Latitude (deg)',labelpad=10, fontsize=font)
95mpl.xticks(xticks,fontsize=font)
96#mpl.xticks(fontsize=font)
97#mpl.yticks(yticks,fontsize=font)
98mpl.yticks(fontsize=font)
99pylab.ylim([-4,250])
100
101mpl.savefig('meanzonalwind.eps',dpi=200)
102mpl.savefig('meanzonalwind.png',dpi=200)
103mpl.show()
104
105
106
107
Note: See TracBrowser for help on using the repository browser.