source: trunk/UTIL/PYTHON/planetoplot_v2/pp.py @ 923

Last change on this file since 923 was 923, checked in by aslmd, 12 years ago

UTIL PYTHON planetoplot_v2

PPCLASS AND PPPLOT

  • added global plot settings in pp() objects
  • self is returned for each method to allow e.g. one-line get + attribution
  • added labeling of 1D plots
  • fine-tuning of plot appearance (e.g. vector key)
  • corrected a problem with plotin (same object can be referred to all along)
  • fixed meanarea for 1D requests

PP.PY

  • no more -f for pp.py (files are simply given as arguments!)
  • added missing options to pp.py
  • nice informative header

PP_RELOAD.PY

  • pp_reload.py can now change colorbars and 1D markers

EXAMPLES

  • general update of examples + few additions
  • added a nice example tide with mixed 2D+1D plots
  • Property svn:executable set to *
File size: 7.9 KB
Line 
1#! /usr/bin/env python
2##############################################
3##  A MINIMAL PP.PY SCRIPT USING PPCLASS.PY ##
4##  Author: A. Spiga 03/2013                ##
5##############################################
6from optparse import OptionParser ### TBR by argparse
7from ppclass import pp, inspect
8import sys
9##############################################
10
11# NB: this is a convenient command-line script
12#     ... but ppclass is more versatile
13#     ... than what is proposed here
14#     ... e.g. differences between files,
15#     ... complex operations,
16#     ... see sample scripts
17
18######################################
19# define parser with version and usage
20######################################
21parser = OptionParser()
22parser.version = \
23'''************************************************************************
24PLANETOPLOT (for help: pp.py -h)
25--> command line tool to make nice & quick plots from netCDF files
26--> based on python + numpy + scipy + matplotlib + basemap + netCDF4
27--> Author: A. Spiga (LMD/UPMC) aymeric.spiga@upmc.fr
28************************************************************************'''
29parser.usage = \
30'''pp.py [options] netCDF file(s)
31(NB: no options --> simple inspection of variables and dimensions in netCDF files'''
32parser.print_version()
33
34########################################
35# set options for the pp.py command line
36########################################
37parser.add_option('--verbose',action='store_true',dest='verbose',default=False,help='make the program verbose')
38# field --> lower case
39parser.add_option('-v','--var',action='append',dest='var',type="string",default=None,help="'variable' or ['var1','var2',etc]")
40parser.add_option('-x','--lon',action='append',dest='x',type="string",default=None,help="x axis value. one value; or val1,val2 (computations)")
41parser.add_option('-y','--lat',action='append',dest='y',type="string",default=None,help="y axis value. one value; or val1,val2 (computations)")
42parser.add_option('-z','--vert',action='append',dest='z',type="string",default=None,help="z axis value. one value; or val1,val2 (computations)")
43parser.add_option('-t','--time',action='append',dest='t',type="string",default=None,help="t axis value. one value; or val1,val2 (computations)")
44parser.add_option('-u','--compute',action='store',dest='compute',type="string",default="mean",help="computation: mean, min, max, meanarea")
45parser.add_option('-c','--contour',action='store',dest='contour',type="string",default=None,help="one 'variable' for contour")
46parser.add_option('-i','--vecx',action='store',dest='vecx',type="string",default=None,help="one 'variable' for wind vector x component")
47parser.add_option('-j','--vecy',action='store',dest='vecy',type="string",default=None,help="one 'variable' for wind vector x component")
48parser.add_option('-m','--mult',action='store',dest='mult',type="float",default=None,help="multiplicative factor on field")
49parser.add_option('-a','--add',action='store',dest='add',type="float",default=None,help="additive factor on field")
50parser.add_option('-o','--output',action='store',dest='filename',type="string",default="myplot",help="name of output files")
51parser.add_option('-d','--directory',action='store',dest='folder',type="string",default="./",help="directory of output files")
52# plot --> upper case
53# -- generic
54parser.add_option('-T','--title',action='append',dest='title',type="string",default=None,help="change 'title'")
55parser.add_option('-X','--xlabel',action='append',dest='xlabel',type="string",default=None,help="change 'xlabel'")
56parser.add_option('-Y','--ylabel',action='append',dest='ylabel',type="string",default=None,help="change 'ylabel'")
57parser.add_option('-D','--div',action='store',dest='div',type="int",default=20,help="integer for number of divisions")
58parser.add_option('-H','--trans',action='store',dest='trans',type="float",default=1.0,help="float for transparency (0=transp,1=opaque)")
59parser.add_option('-Z','--logy',action='store_true',dest='logy',default=False,help="set log for vertical axis")
60parser.add_option('-O','--save',action='store',dest='out',type="string",default="gui",help="save mode: 'gui' 'png' 'pdf' 'eps' 'svg' 'ps'")
61# -- 1D plot
62parser.add_option('-L','--lstyle',action='append',dest='lstyle',type="string",default=None,help="[1D] linestyle: '-' '--' '.' '..'")
63parser.add_option('-Q','--color',action='append',dest='color',type="string",default=None,help="[1D] color: 'b' 'g' 'r' etc")
64parser.add_option('-K','--marker',action='append',dest='marker',type="string",default=None,help="[1D] marker: '' 'x' 'o' etc")
65parser.add_option('-S','--superpose',action='store_true',dest='superpose',default=False,help="[1D] use same axis for all plots")
66parser.add_option('-E','--label',action='append',dest='label',type="string",default=None,help="[1D] label for line")
67# -- 2D plot
68parser.add_option('-C','--colorb',action='append',dest='colorb',type="string",default=None,help="[2D] colormap: http://micropore.files.wordpress.com/2010/06/colormaps.png")
69parser.add_option('-P','--proj',action='append',dest='proj',type="string",default=None,help="[2D] map projection: 'cyl' 'npstere' 'spstere' 'ortho' 'moll' 'robin' 'lcc' 'laea' 'merc'")
70parser.add_option('-B','--back',action='append',dest='back',type="string",default=None,help='[2D] predefined map background (cf. set_back.txt)')
71parser.add_option('-A','--area',action='append',dest='area',type="string",default=None,help='[2D] predefined region of mapping (cf. set_area.txt)')
72parser.add_option('-I','--blon',action='append',dest='blon',type="float",default=None,help='[2D] float: bounding longitude for stere (or center longitude for ortho)')
73parser.add_option('-J','--blat',action='append',dest='blat',type="float",default=None,help='[2D] float: bounding latitude for stere (or center latitude for ortho) ')
74parser.add_option('-N','--vmin',action='append',dest='vmin',type="float",default=None,help='[2D] float: minimum value for displayed field')
75parser.add_option('-M','--vmax',action='append',dest='vmax',type="float",default=None,help='[2D] float: maximum value for displayed field')
76(opt,args) = parser.parse_args()
77
78######################################
79# get arguments (one or several files)
80######################################
81if args is None:
82    print "Stop here! I need file(s) as argument(s)!" ; exit()
83else:
84    files = args
85
86#############################################
87# a possibility to simply inspect the file(s)
88#############################################
89if opt.var is None:
90    for filename in files: inspect(filename)
91    exit()
92
93######################################
94# use ppclass to get field and plot it
95######################################
96# treat the case of additional vectors or contours (contours must be before vectors)
97var = [] ; vargoal = []
98for element in opt.var:
99    var.append(element) ; vargoal.append("main")
100    if opt.contour is not None: var.append(opt.contour) ; vargoal.append("contour")
101    if opt.vecx is not None: var.append(opt.vecx) ; vargoal.append("vector")
102    if opt.vecy is not None: var.append(opt.vecy) ; vargoal.append("vector")
103# set pp object
104user = pp()
105user.file = files
106user.var = var ; user.vargoal = vargoal
107user.x = opt.x ; user.y = opt.y
108user.z = opt.z ; user.t = opt.t
109user.verbose = opt.verbose
110user.compute = opt.compute
111# define field
112user.define()
113# retrieve field
114user.retrieve()
115# some possible operations
116if opt.add is not None: user = user + opt.add
117if opt.mult is not None: user = user * opt.mult
118# get some options
119user.superpose = opt.superpose
120user.filename = opt.filename
121user.folder = opt.folder
122user.out = opt.out
123# define plot
124user.defineplot()
125# user-defined plot settings
126user.getopt(opt)
127# make plot
128user.makeplot()
129
130####################################
131# save a .sh file with the command #
132####################################
133command = ""
134for arg in sys.argv: command = command + arg + ' '
135try:
136    f = open(opt.folder+'/'+opt.filename+'.sh', 'w')
137    f.write(command)   
138except IOError:
139    print "!! WARNING !! pp.py command not saved. Probably do not have permission to write here."
Note: See TracBrowser for help on using the repository browser.