- Timestamp:
- Aug 31, 2016, 9:01:13 PM (9 years ago)
- Location:
- trunk/tools
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/drawing.py
r1071 r1074 31 31 ## e.g. # drawing.py -o draw_river_desc -f diver_desc.nc -S 'Y|lat|lat|-1,X|lon|lon|-1:red,green:Blues:cyl,l:ORCDHIEE rivers:pdf:0:or_rivers -v Amazon 32 32 ## e.g. # drawing.py -o draw_vertical_levels -f wrfout_d01_2001-11-11_00:00:00 -S 'true:false:wrfout!vertical!levels!(standard!40):png:4' -v WRFz 33 ## e.g. $ drawing.py -o draw_subbasin -f Caceres_subbasin.nc -S 'Caceres:None:cyl,l:2,True:Caceres:pdf:0:Caceres_subbasin' 33 ## e.g. # drawing.py -o draw_subbasin -f Caceres_subbasin.nc -S 'Caceres:None:cyl,l:2,True:Caceres:pdf:0:Caceres_subbasin' 34 ## e.g. # drawing.py -o draw_2lines -f /home/lluis/etudes/WRF_LMDZ/WaquaL_highres/tests/model_graphics/WRF/current/wss_wrfout_tvar_xmean.nc,/home/lluis/etudes/WRF_LMDZ/WaquaL_highres/tests/model_graphics/WRF/current/tas_wrfout_tvar_xmean.nc -v wssvarmean,tasvarmean -S 'lat:0.,20.:0.,4.:-90.,90.:y:wss,tas:red,blue:2.,2.:-:2.,2.:,:wss!tas!mean!meridional!tvar:lon:0:wss_tas_wrfout_tvar_xmean:pdf' 34 35 35 36 main = 'drawing.py' … … 42 43 'draw_2D_shad_cont', 'draw_2D_shad_cont_time', 'draw_2D_shad_line', \ 43 44 'draw_2D_shad_line_time', 'draw_barbs', 'draw_basins', \ 44 'draw_ lines', 'draw_lines_time', 'draw_Neighbourghood_evol',\45 'draw_2lines', 'draw_lines', 'draw_lines_time', 'draw_Neighbourghood_evol', \ 45 46 'draw_points', 'draw_points_lonlat', \ 46 47 'draw_ptZvals', 'draw_river_desc', 'draw_subbasin', 'draw_timeSeries', \ … … 4116 4117 return 4117 4118 4118 def draw_2lines( values,ncfiles,varnames):4119 def draw_2lines(ncfiles, values, varnames): 4119 4120 """ Fucntion to plot two lines in different axes (x/x2 or y/y2) 4120 values= [ varnA]:[varnB]:[commonvardim]:[varangeA]:[varangeB]:[varangeaxis]:[axisvals]:[figvarns]:[colors]:4121 values= [commonvardim]:[varangeA]:[varangeB]:[varangeaxis]:[axisvals]:[figvarns]:[colors]: 4121 4122 [widths]:[styles]:[sizemarks]:[marks]:[graphtitle]:[labelaxis]:[lloc]:[figname]:[figkind] 4122 [varnA]: name of the variable A in fileA4123 [varnB]: name of the variable B in fileB4124 4123 [commonvardim]: name of the common variable-dimension 4125 4124 [varangeA]: ',' separated list of range (min,max) for A values ('None', automatic; 'Extrs' from values extremes) … … 4145 4144 varnames= ',' separated list of variables names in the files to plot 4146 4145 """ 4147 f unction= 'draw_2lines'4146 fname = 'draw_2lines' 4148 4147 4149 4148 if values == 'h': … … 4152 4151 quit() 4153 4152 4154 expectargs = '[ varnA]:[varnB]:[commonvardim]:[varangeA]:[varangeB]:' + \4153 expectargs = '[commonvardim]:[varangeA]:[varangeB]:' + \ 4155 4154 '[varangeaxis]:[axisvals]:[figvarns]:[colors]:[widths]:[styles]:[sizemarks]:' + \ 4156 4155 '[marks]:[graphtitle]:[labelaxis]:[lloc]:[figname]:[figkind]' … … 4158 4157 drw.check_arguments(fname,values,expectargs,':') 4159 4158 4160 varns = [values.split(':')[0], values.split(':')[1]] 4161 commonvardim = values.split(':')[2] 4162 varangeA0 = values.split(':')[3] 4163 varangeB0 = values.split(':')[4] 4164 varangeaxis0 = values.split(':')[5] 4165 axisvals = values.split(':')[6] 4166 figvarns = values.split(':')[7].split(',') 4167 colors = gen.str_list(values.split(':')[8],',') 4168 widths = gen.str_list(values.split(':')[9],',') 4169 styles = gen.str_list(values.split(':')[10],',') 4170 sizemarks = gen.str_list(values.split(':')[11],',') 4171 marks = gen.str_list(values.split(':')[12],',') 4172 graphtitle = values.split(':')[13].replace('!',' ') 4173 labelaxis = values.split(':')[14].replace('!',' ') 4174 lloc = np.int(values.split(':')[15]) 4175 figname = values.split(':')[16] 4176 figkind = values.split(':')[17] 4159 commonvardim = values.split(':')[0] 4160 varangeA0 = values.split(':')[1] 4161 varangeB0 = values.split(':')[2] 4162 varangeaxis0 = values.split(':')[3] 4163 axisvals = values.split(':')[4] 4164 figvarns = values.split(':')[5].split(',') 4165 colors = gen.str_list(values.split(':')[6],',') 4166 widths = gen.str_list_k(values.split(':')[7],',','np.float') 4167 styles = gen.str_list(values.split(':')[8],',') 4168 sizemarks = gen.str_list_k(values.split(':')[9],',','np.float') 4169 marks = gen.str_list(values.split(':')[10],',') 4170 graphtitle = values.split(':')[11].replace('!',' ') 4171 labelaxis = values.split(':')[12].replace('!',' ') 4172 lloc = np.int(values.split(':')[13]) 4173 figname = values.split(':')[14] 4174 figkind = values.split(':')[15] 4177 4175 4178 4176 files = ncfiles.split(',') … … 4186 4184 print ' ' + fname + ": file '" + files[0] + "' does not exist !!" 4187 4185 quit(-1) 4186 4188 4187 oncA = NetCDFFile(files[0], 'r') 4189 4188 4190 if not gen.searchIn file(oncA.variables.kesy(), invarns[0]):4189 if not gen.searchInlist(oncA.variables.keys(), invarns[0]): 4191 4190 print errormsg 4192 4191 print ' ' + fname + ": A file '" + files[0] + "' does not have variable '" +\ 4193 4192 invarns[0] + "' !!" 4194 4193 quit(-1) 4194 4195 4195 objvA = oncA.variables[invarns[0]] 4196 4196 varvalsA = objvA[:] 4197 varangeA = []4198 4199 if gen.searchIn file(objvA.ncattrs(), 'units'):4200 varunits.append( objva.getncattr('units'))4197 varangeA = np.zeros((2),dtype=np.float) 4198 4199 if gen.searchInlist(objvA.ncattrs(), 'units'): 4200 varunits.append(drw.units_lunits(objvA.getncattr('units'))) 4201 4201 else: 4202 4202 valsA = gen.variables_values(invarns[0]) 4203 varunits.append( valsA[5])4204 4205 4206 4207 4208 4209 for iv in range(2): varangeA[iv] = np.float(varangeA0[iv])4210 4211 if not gen.searchIn file(oncA.variables.kesy(), commvardim):4203 varunits.append(drw.units_lunits(valsA[5])) 4204 if varangeA0 == 'None': 4205 varangeA = [valsA[2], valsA[3]] 4206 elif varangeA0 == 'Extrs': 4207 varangeA = [np.min(varvalsA), np.max(varvalsA)] 4208 else: 4209 for iv in range(2): varangeA[iv] = np.float(varangeA0.split(',')[iv]) 4210 4211 if not gen.searchInlist(oncA.variables.keys(), commonvardim): 4212 4212 print errormsg 4213 4213 print ' ' + fname + ": A file '" + files[0] + "' does not have common " + \ … … 4224 4224 print ' ' + fname + ": file '" + files[1] + "' does not exist !!" 4225 4225 quit(-1) 4226 4226 4227 oncB = NetCDFFile(files[1], 'r') 4227 4228 4228 if not gen.searchIn file(oncB.variables.keys(), invarns[1]):4229 if not gen.searchInlist(oncB.variables.keys(), invarns[1]): 4229 4230 print errormsg 4230 4231 print ' ' + fname + ": B file '" + files[1] + "' does not have variable '" +\ 4231 4232 invarns[1] + "' !!" 4232 4233 quit(-1) 4234 4233 4235 objvB = oncB.variables[invarns[1]] 4234 4236 varvalsB = objvB[:] 4235 varangeB = []4236 4237 if gen.searchIn file(objvB.ncattrs(), 'units'):4238 varunits.append( objvB.getncattr('units'))4237 varangeB = np.zeros((2),dtype=np.float) 4238 4239 if gen.searchInlist(objvB.ncattrs(), 'units'): 4240 varunits.append(drw.units_lunits(objvB.getncattr('units'))) 4239 4241 else: 4240 4242 valsB = gen.variables_values(invarns[1]) 4241 varunits.append(valsB[5]) 4242 if varangeB0 == 'None': 4243 varangeB = [valsB[2], valsB[3]] 4244 elif varangeB0 == 'Extrs': 4245 varangeA = [np.min(varvalsA), np.max(varvalsA)] 4246 else: 4247 for iv in range(2): varangeB[iv] = np.float(varangeB0[iv]) 4248 4249 if not gen.searchInfile(oncB.variables.keys(), commvardim): 4243 varunits.append(drw.units_lunits(valsB[5])) 4244 if varangeB0 == 'None': 4245 varangeB = [valsB[2], valsB[3]] 4246 elif varangeB0 == 'Extrs': 4247 varangeA = [np.min(varvalsA), np.max(varvalsA)] 4248 else: 4249 for iv in range(2): varangeB[iv] = np.float(varangeB0.split(',')[iv]) 4250 4251 # Common vardim 4252 if not gen.searchInlist(oncB.variables.keys(), commonvardim): 4250 4253 print errormsg 4251 4254 print ' ' + fname + ": B file '" + files[1] + "' does not have common " + \ … … 4256 4259 4257 4260 # Range of the axis 4258 varangeaxis = [] 4259 if gen.searchInfile(objvd.ncattrs(), 'units'): 4260 dimvarunits.append(objvd.getncattr('units')) 4261 else: 4262 valsVD = gen.variables_values(commonvardim) 4263 varunits.append(valsVD[5]) 4264 if varangeaxis0 == 'None': 4265 varangeaxis = [valsVD[2], valsVD[3]] 4266 elif varangeaxis0 == 'Extrs': 4267 varangeaxis[0] = np.min([np.min(varvalsaxisA), np.min(varvalsaxisB)]) 4268 varangeaxis[1] = np.max([np.max(varvalsaxisA), np.max(varvalsaxisB)]) 4269 else: 4270 for iv in range(2): varangeaxis0[iv] = np.float(varangeaxis[iv]) 4261 varangeaxis = np.zeros((2),dtype=np.float) 4262 4263 valsVD = gen.variables_values(commonvardim) 4264 if gen.searchInlist(objvd.ncattrs(), 'units'): 4265 dimvarunits = drw.units_lunits(objvd.getncattr('units')) 4266 else: 4267 dimvarunits = drw.units_lunits(valsVD[5]) 4268 if varangeaxis0 == 'None': 4269 varangeaxis = [valsVD[2], valsVD[3]] 4270 elif varangeaxis0 == 'Extrs': 4271 varangeaxis[0] = np.min([np.min(varvalsaxisA), np.min(varvalsaxisB)]) 4272 varangeaxis[1] = np.max([np.max(varvalsaxisA), np.max(varvalsaxisB)]) 4273 else: 4274 for iv in range(2): varangeaxis[iv] = np.float(varangeaxis0.split(',')[iv]) 4271 4275 4272 4276 oncB.close() 4273 4277 4274 plot_2lines(varvalsA, varvalsB, varvalsaxisA, varvalsaxisB, varangeA, varrangeB, \ 4275 varangeaxis, axisvals, varns, varunits, colors, widths, styles, sizemarks, \ 4276 marks, graphtitle, labelaxis, lloc, figname, figkind): 4278 labelaxis = valsVD[0] + ' (' + dimvarunits + ')' 4279 4280 # Lines characteristics 4281 colvalues, linekinds, pointkinds, lwidths, psizes = drw.ColorsLinesPointsStyles( \ 4282 2, colors, styles, marks, widths, sizemarks, 'None') 4283 4284 drw.plot_2lines(varvalsA, varvalsB, varvalsaxisA, varvalsaxisB, varangeA, \ 4285 varangeB, varangeaxis, axisvals, figvarns, varunits, colvalues, lwidths, \ 4286 linekinds, psizes, pointkinds, graphtitle, labelaxis, lloc, figname, figkind) 4277 4287 4278 4288 #quit() … … 4314 4324 # Not checking file operation 4315 4325 Notcheckingfile = ['draw_2D_shad_cont', 'draw_2D_shad_cont_time', \ 4316 'draw_2D_shad_line', 'draw_2D_shad_line_time', 'draw_ lines', 'draw_lines_time',\4317 'draw_ points', 'draw_topo_geogrid_boxes', 'draw_trajectories',\4326 'draw_2D_shad_line', 'draw_2D_shad_line_time', 'draw_2lines', 'draw_lines', \ 4327 'draw_lines_time', 'draw_points', 'draw_topo_geogrid_boxes', 'draw_trajectories', \ 4318 4328 'draw_vals_trajectories', 'variable_values'] 4319 4329 … … 4350 4360 elif oper == 'draw_Neighbourghood_evol': 4351 4361 draw_Neighbourghood_evol(opts.ncfile, opts.values, opts.varname) 4362 elif oper == 'draw_2lines': 4363 draw_2lines(opts.ncfile, opts.values, opts.varname) 4352 4364 elif oper == 'draw_lines': 4353 4365 draw_lines(opts.ncfile, opts.values, opts.varname) -
trunk/tools/drawing_tools.py
r1071 r1074 67 67 # dxdy_lonlat: Function to provide lon/lat 2D lilke-matrices from any sort of dx,dy values 68 68 # plot_2D_shadow_line: 69 # plot_2lines: Function to plot two lines in different axes (x/x2 or y/y2) 69 70 # plot_lines: Function to plot a collection of lines 70 71 # plot_ZQradii: Function to plot following radial averages only at exact grid poins … … 7446 7447 axisvals, varns, varus, cols, wdths, styls, szmks, marks, gtitle, axisn, gloc, \ 7447 7448 fign, figk): 7448 """ Fu cntion to plot two lines in different axes (x/x2 or y/y2)7449 """ Function to plot two lines in different axes (x/x2 or y/y2) 7449 7450 valsA= values to be plotted on axis x or y 7450 7451 valsB= values to be plotted on axis x2 or y2 … … 7468 7469 figk= kind of figure 7469 7470 """ 7470 f unction= 'plot_2lines'7471 fname = 'plot_2lines' 7471 7472 7472 7473 if axisvals == 'x': 7473 7474 titX = axisn 7474 7475 titX2 = axisn 7475 titY = varns[0] + ' ' + varus[0]7476 titY = varns[0] + ' (' + varus[0] + ')' 7476 7477 titY2 = varns[1] + ' (' + varus[1] + ')' 7477 7478 xmin = rangeaxis[0] … … 7484 7485 ymax2 = rangeB[1] 7485 7486 else: 7486 titX = varns[0] + ' ' + varus[0]7487 titX = varns[0] + ' (' + varus[0] + ')' 7487 7488 titX2 = varns[1] + ' (' + varus[1] + ')' 7488 7489 titY = axisn … … 7500 7501 fig, ax1 = plt.subplots() 7501 7502 7502 # line A 7503 # Plotting lines 7504 il=0 7503 7505 if axisvals == 'x': 7504 il=0 7505 ax1.plot(valsaxisA, valsA, styls[il], marker=marks[il], linewidth=wdths[il], \ 7506 markersize=szmks[il], label=varns[il], color=cols[il]) 7506 lA, = ax1.plot(valsaxisA, valsA, styls[il], marker=marks[il], \ 7507 linewidth=wdths[il], markersize=szmks[il], label=varns[il], color=cols[il]) 7507 7508 ax1.set_xlabel(titX, color='black') 7508 7509 ax1.set_ylabel(titY, color=cols[il]) … … 7510 7511 ax1.set_ylim(ymin,ymax) 7511 7512 7512 ax2 = ax1.twin y()7513 ax2 = ax1.twinx() 7513 7514 il = il + 1 7514 ax2.plot(valsaxisB, valsB, styls[il], marker=marks[il], linewidth=wdths[il],\7515 markersize=szmks[il], label=varns[il], color=cols[il])7515 lB, = ax2.plot(valsaxisB, valsB, styls[il], marker=marks[il], \ 7516 linewidth=wdths[il], markersize=szmks[il], label=varns[il], color=cols[il]) 7516 7517 ax2.set_ylabel(titY2, color=cols[il]) 7517 7518 ax2.set_ylim(ymin2,ymax2) 7518 else: 7519 ax1.plot(valsA, valsaxisA, styls[il], marker=marks[il], linewidth=wdths[il], \ 7520 markersize=szmks[il], label=varns[il], color=cols[il]) 7519 ax2.set_xlim(xmin,xmax) 7520 titleloc = (0.5,1.) 7521 else: 7522 lA, = ax1.plot(valsA, valsaxisA, styls[il], marker=marks[il], \ 7523 linewidth=wdths[il], markersize=szmks[il], label=varns[il], color=cols[il]) 7521 7524 ax1.set_xlabel(titX, color=cols[il]) 7522 7525 ax1.set_ylabel(titY, color='black') 7523 7526 ax1.set_xlim(xmin,xmax) 7524 7527 ax1.set_ylim(ymin,ymax) 7525 ax2 = ax1.twin x()7528 ax2 = ax1.twiny() 7526 7529 il = il + 1 7527 ax2.plot(valsB, valsaxisB, styls[il], marker=marks[il], linewidth=wdths[il],\7528 markersize=szmks[il], label=varns[il], color=cols[il])7530 lB, = ax2.plot(valsB, valsaxisB, styls[il], marker=marks[il], \ 7531 linewidth=wdths[il], markersize=szmks[il], label=varns[il], color=cols[il]) 7529 7532 ax2.set_xlabel(titX2, color=cols[il]) 7530 7533 ax2.set_xlim(xmin2,xmax2) 7534 ax2.set_ylim(ymin,ymax) 7535 titleloc = (0.5,1.075) 7531 7536 7532 7537 graphtit = gtitle.replace('_','\_').replace('&','\&') 7533 7538 7534 plt. set_title(graphtit)7535 plt.legend(loc=gloc)7539 plt.title(graphtit,position=titleloc) 7540 # plt.legend([lA, lB], loc=gloc) 7536 7541 7537 7542 output_kind(figk, fign, True)
Note: See TracChangeset
for help on using the changeset viewer.