Changeset 1191 in lmdz_wrf for trunk/tools
- Timestamp:
- Oct 17, 2016, 4:50:51 PM (9 years ago)
- Location:
- trunk/tools
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/drawing_tools.py
r1190 r1191 47 47 # units_lunits: 48 48 # ASCII_LaTeX: 49 # pretty_int:50 49 # DegGradSec_deg: 51 50 # intT2dt: … … 1977 1976 return newln 1978 1977 1979 def pretty_int(minv,maxv,Nint):1980 """ Function to plot nice intervals1981 minv= minimum value1982 maxv= maximum value1983 Nint= number of intervals1984 >>> pretty_int(23.50,67.21,5)1985 [ 25. 30. 35. 40. 45. 50. 55. 60. 65.]1986 >>> pretty_int(-23.50,67.21,15)1987 [ 0. 20. 40. 60.]1988 >>> pretty_int(14.75,25.25,5)1989 [ 16. 18. 20. 22. 24.]1990 >>> pretty_int(-20.,20.,10)1991 [-20. -15. -10. -5. 0. 5. 10. 15.]1992 """1993 fname = 'pretty_int'1994 nice_int = [1,2,5]1995 1996 interval = np.abs(maxv - minv)1997 1998 if interval < 0.:1999 print errormsg2000 print ' ' + fname + ': wrong interval',interval,'!!'2001 print ' it can not be negative'2002 quit(-1)2003 2004 potinterval = np.log10(interval)2005 Ipotint = int(potinterval)2006 intvalue = np.float(interval / np.float(Nint))2007 2008 # new2009 potinterval = np.log10(intvalue)2010 Ipotint = np.floor(potinterval)2011 2012 # print fname + '; Lluis: interval:', interval, 'intavlue:', intvalue, 'potinterval:', potinterval, \2013 # 'Ipotint:', Ipotint, 'intvalue:', intvalue2014 2015 mindist = 10.e152016 for inice in nice_int:2017 # print inice,':',inice*10.**Ipotint,np.abs(inice*10.**Ipotint - intvalue),mindist2018 if np.abs(inice*10.**Ipotint - intvalue) < mindist:2019 mindist = np.abs(inice*10.**Ipotint - intvalue)2020 closestint = inice2021 2022 Ibeg = int(minv / (closestint*10.**Ipotint))2023 2024 values = []2025 val = closestint*(Ibeg)*10.**(Ipotint)2026 dval = closestint*10.**(Ipotint)2027 2028 # print 'closestint:',closestint,'Ibeg:',Ibeg,'val:',val,'dval:',dval2029 2030 while val < maxv:2031 values.append(val)2032 val = val + dval2033 2034 return np.array(values, dtype=np.float)2035 2036 1978 def DegGradSec_deg(grad,deg,sec): 2037 1979 """ Function to transform from a coordinate in grad deg sec to degrees (decimal) … … 3160 3102 m.drawcoastlines() 3161 3103 3162 meridians = pretty_int(nlon,xlon,5)3104 meridians = gen.pretty_int(nlon,xlon,5) 3163 3105 m.drawmeridians(meridians,labels=[True,False,False,True]) 3164 3106 3165 parallels = pretty_int(nlat,xlat,5)3107 parallels = gen.pretty_int(nlat,xlat,5) 3166 3108 m.drawparallels(parallels,labels=[False,True,True,False]) 3167 3109 else: … … 3368 3310 # if (nlon > 180.): nlon0 = nlon - 360. 3369 3311 # if (xlon > 180.): xlon0 = xlon - 360. 3370 # meridians = pretty_int(nlon0,xlon0,5)3312 # meridians = gen.pretty_int(nlon0,xlon0,5) 3371 3313 # meridians = np.where(meridians < 0., meridians + 360., meridians) 3372 3314 # else: 3373 # meridians = pretty_int(nlon,xlon,5)3374 3375 meridians = pretty_int(nlon,xlon,5)3315 # meridians = gen.pretty_int(nlon,xlon,5) 3316 3317 meridians = gen.pretty_int(nlon,xlon,5) 3376 3318 3377 3319 m.drawmeridians(meridians,labels=[True,False,False,True]) 3378 parallels = pretty_int(nlat,xlat,5)3320 parallels = gen.pretty_int(nlat,xlat,5) 3379 3321 m.drawparallels(parallels,labels=[False,True,True,False]) 3380 3322 … … 3643 3585 m.drawcoastlines() 3644 3586 3645 meridians = pretty_int(nlon,xlon,5)3587 meridians = gen.pretty_int(nlon,xlon,5) 3646 3588 m.drawmeridians(meridians,labels=[True,False,False,True]) 3647 3589 3648 parallels = pretty_int(nlat,xlat,5)3590 parallels = gen.pretty_int(nlat,xlat,5) 3649 3591 m.drawparallels(parallels,labels=[False,True,True,False]) 3650 3592 … … 3806 3748 m.drawcoastlines() 3807 3749 3808 meridians = pretty_int(nlon,xlon,5)3750 meridians = gen.pretty_int(nlon,xlon,5) 3809 3751 m.drawmeridians(meridians,labels=[True,False,False,True]) 3810 3752 3811 parallels = pretty_int(nlat,xlat,5)3753 parallels = gen.pretty_int(nlat,xlat,5) 3812 3754 m.drawparallels(parallels,labels=[False,True,True,False]) 3813 3755 … … 3961 3903 m.drawcoastlines() 3962 3904 3963 meridians = pretty_int(nlon,xlon,5)3905 meridians = gen.pretty_int(nlon,xlon,5) 3964 3906 m.drawmeridians(meridians,labels=[True,False,False,True]) 3965 3907 3966 parallels = pretty_int(nlat,xlat,5)3908 parallels = gen.pretty_int(nlat,xlat,5) 3967 3909 m.drawparallels(parallels,labels=[False,True,True,False]) 3968 3910 … … 4057 3999 4058 4000 if xaxv[0] == 'pretty': 4059 dimxt0 = np.array( pretty_int(dxn,dxx,xaxv[2]))4001 dimxt0 = np.array(gen.pretty_int(dxn,dxx,xaxv[2])) 4060 4002 elif xaxv[0] == 'Nfix': 4061 4003 dimxt0 = np.arange(dxn,dxx,(dxx-dxn)/(1.*xaxv[2])) … … 4063 4005 dimxt0 = np.arange(0,dxx,xaxv[2]) 4064 4006 if yaxv[0] == 'pretty': 4065 dimyt0 = np.array( pretty_int(dyn,dyx,yaxv[2]))4007 dimyt0 = np.array(gen.pretty_int(dyn,dyx,yaxv[2])) 4066 4008 elif yaxv[0] == 'Nfix': 4067 4009 dimyt0 = np.arange(dyn,dyx,(dyx-dyn)/(1.*yaxv[2])) … … 4200 4142 m.drawcoastlines() 4201 4143 4202 meridians = pretty_int(nlon,xlon,xaxv[2])4144 meridians = gen.pretty_int(nlon,xlon,xaxv[2]) 4203 4145 m.drawmeridians(meridians,labels=[True,False,False,True]) 4204 parallels = pretty_int(nlat,xlat,yaxv[2])4146 parallels = gen.pretty_int(nlat,xlat,yaxv[2]) 4205 4147 m.drawparallels(parallels,labels=[False,True,True,False]) 4206 4148 … … 4217 4159 # print 'x min:', x.min(),'max:',x.max() 4218 4160 # print 'y min:', y.min(),'max:',y.max() 4219 # txpos = pretty_int(x.min(),x.max(),5)4220 # typos = pretty_int(y.min(),y.max(),5)4161 # txpos = gen.pretty_int(x.min(),x.max(),5) 4162 # typos = gen.pretty_int(y.min(),y.max(),5) 4221 4163 # txlabels = list(txpos) 4222 4164 # for i in range(len(txlabels)): txlabels[i] = '{:6g}'.format(txlabels[i]) … … 4297 4239 txlabels = tlabs 4298 4240 plxlabel = dimxu 4299 typos = pretty_int(np.min(dimyv),np.max(dimyv),10)4241 typos = gen.pretty_int(np.min(dimyv),np.max(dimyv),10) 4300 4242 tylabels = list(typos) 4301 4243 for i in range(len(tylabels)): tylabels[i] = str(tylabels[i]) … … 4303 4245 units_lunits(dimyu) + ')' 4304 4246 else: 4305 txpos = pretty_int(np.min(dimxv),np.max(dimxv),10)4247 txpos = gen.pretty_int(np.min(dimxv),np.max(dimxv),10) 4306 4248 txlabels = list(txpos) 4307 4249 plxlabel = variables_values(dimn[1])[0].replace('_','\_') + ' (' + \ … … 4539 4481 4540 4482 if xaxv[0] == 'pretty': 4541 dimxt0 = np.array( pretty_int(dxn,dxx,xaxv[2]))4483 dimxt0 = np.array(gen.pretty_int(dxn,dxx,xaxv[2])) 4542 4484 elif xaxv[0] == 'Nfix': 4543 4485 dimxt0 = np.arange(0.,1.,1./xaxv[2]) … … 4546 4488 dimxt0 = np.arange(0,dxx,xaxv[2]) 4547 4489 if yaxv[0] == 'pretty': 4548 dimyt0 = np.array( pretty_int(dyn,dyx,yaxv[2]))4490 dimyt0 = np.array(gen.pretty_int(dyn,dyx,yaxv[2])) 4549 4491 elif yaxv[0] == 'Nfix': 4550 4492 dimyt0 = np.arange(0.,1.,1./yaxv[2]) … … 4707 4649 m.drawcoastlines() 4708 4650 4709 meridians = pretty_int(nlon,xlon,5)4651 meridians = gen.pretty_int(nlon,xlon,5) 4710 4652 m.drawmeridians(meridians,labels=[True,False,False,True]) 4711 parallels = pretty_int(nlat,xlat,5)4653 parallels = gen.pretty_int(nlat,xlat,5) 4712 4654 m.drawparallels(parallels,labels=[False,True,True,False]) 4713 4655 … … 4748 4690 # vals2[j,i]=np.sqrt((j-Nvals/2)**2. + (i-Nvals/2)**2.) - Nvals/2 4749 4691 4750 #prettylev= pretty_int(-Nvals/2,Nvals/2,10)4692 #prettylev=gen.pretty_int(-Nvals/2,Nvals/2,10) 4751 4693 4752 4694 #plot_2D_shadow_contour(vals1, vals2, ['var1', 'var2'], np.arange(50)*1., \ … … 4819 4761 # Time ticks-labels are already given from another function 4820 4762 if xaxv[0] == 'pretty': 4821 dimxt0 = np.array( pretty_int(dxn,dxx,xaxv[2]))4763 dimxt0 = np.array(gen.pretty_int(dxn,dxx,xaxv[2])) 4822 4764 elif xaxv[0] == 'Nfix': 4823 4765 dimxt0 = np.arange(0.,1.+1./xaxv[2],1./xaxv[2]) … … 5342 5284 m.drawcoastlines() 5343 5285 5344 meridians = pretty_int(nlon,xlon,5)5286 meridians = gen.pretty_int(nlon,xlon,5) 5345 5287 m.drawmeridians(meridians,labels=[True,False,False,True]) 5346 parallels = pretty_int(nlat,xlat,5)5288 parallels = gen.pretty_int(nlat,xlat,5) 5347 5289 m.drawparallels(parallels,labels=[False,True,True,False]) 5348 5290 … … 5369 5311 plt.plot(x[0,:], newlinv, '-', color=colln, linewidth=2) 5370 5312 5371 txpos = pretty_int(x.min(),x.max(),10)5372 typos = pretty_int(y.min(),y.max(),10)5313 txpos = gen.pretty_int(x.min(),x.max(),10) 5314 typos = gen.pretty_int(y.min(),y.max(),10) 5373 5315 txlabels = list(txpos) 5374 5316 for i in range(len(txlabels)): txlabels[i] = str(txlabels[i]) … … 5376 5318 for i in range(len(tylabels)): tylabels[i] = str(tylabels[i]) 5377 5319 5378 tllabels = pretty_int(np.min(varlv),np.max(varlv),len(txlabels))5320 tllabels = gen.pretty_int(np.min(varlv),np.max(varlv),len(txlabels)) 5379 5321 for it in range(len(tllabels)): 5380 5322 yval = (tllabels[it]*b+a) … … 5397 5339 plt.yticks(typos, tylabels) 5398 5340 5399 tllabels = pretty_int(np.min(varlv),np.max(varlv),len(txlabels))5341 tllabels = gen.pretty_int(np.min(varlv),np.max(varlv),len(txlabels)) 5400 5342 for it in range(len(tllabels)): 5401 5343 plt.annotate(tllabels[it], xy=(1.01,tllabels[it]/np.max(varlv)), xycoords='axes fraction') … … 6134 6076 m.drawcoastlines() 6135 6077 6136 meridians = pretty_int(nlon,xlon,5)6078 meridians = gen.pretty_int(nlon,xlon,5) 6137 6079 m.drawmeridians(meridians,labels=[True,False,False,True],color="black") 6138 6080 6139 parallels = pretty_int(nlat,xlat,5)6081 parallels = gen.pretty_int(nlat,xlat,5) 6140 6082 m.drawparallels(parallels,labels=[False,True,True,False],color="black") 6141 6083 … … 6264 6206 m.drawcoastlines() 6265 6207 6266 meridians = pretty_int(nlon,xlon,5)6208 meridians = gen.pretty_int(nlon,xlon,5) 6267 6209 m.drawmeridians(meridians,labels=[True,False,False,True]) 6268 6210 6269 parallels = pretty_int(nlat,xlat,5)6211 parallels = gen.pretty_int(nlat,xlat,5) 6270 6212 m.drawparallels(parallels,labels=[False,True,True,False]) 6271 6213 # else: … … 6419 6361 m.drawcoastlines() 6420 6362 6421 meridians = pretty_int(nlon,xlon,5)6363 meridians = gen.pretty_int(nlon,xlon,5) 6422 6364 m.drawmeridians(meridians,labels=[True,False,False,True],color="black") 6423 6365 6424 parallels = pretty_int(nlat,xlat,5)6366 parallels = gen.pretty_int(nlat,xlat,5) 6425 6367 m.drawparallels(parallels,labels=[False,True,True,False],color="black") 6426 6368 … … 6590 6532 if drawcountry: m.drawcountries() 6591 6533 6592 meridians = pretty_int(nlon,xlon,5)6534 meridians = gen.pretty_int(nlon,xlon,5) 6593 6535 m.drawmeridians(meridians,labels=[True,False,False,True],color="black") 6594 6536 6595 parallels = pretty_int(nlat,xlat,5)6537 parallels = gen.pretty_int(nlat,xlat,5) 6596 6538 m.drawparallels(parallels,labels=[False,True,True,False],color="black") 6597 6539 … … 6809 6751 if drawcountry: m.drawcountries() 6810 6752 6811 meridians = pretty_int(nlon,xlon,5)6753 meridians = gen.pretty_int(nlon,xlon,5) 6812 6754 m.drawmeridians(meridians,labels=[True,False,False,True],color="black") 6813 6755 6814 parallels = pretty_int(nlat,xlat,5)6756 parallels = gen.pretty_int(nlat,xlat,5) 6815 6757 m.drawparallels(parallels,labels=[False,True,True,False],color="black") 6816 6758 … … 6968 6910 m.drawcoastlines() 6969 6911 6970 meridians = pretty_int(nlon,xlon,5)6912 meridians = gen.pretty_int(nlon,xlon,5) 6971 6913 m.drawmeridians(meridians,labels=[True,False,False,True],color="black") 6972 6914 6973 parallels = pretty_int(nlat,xlat,5)6915 parallels = gen.pretty_int(nlat,xlat,5) 6974 6916 m.drawparallels(parallels,labels=[False,True,True,False],color="black") 6975 6917 … … 7308 7250 m.drawcoastlines() 7309 7251 7310 meridians = pretty_int(nlon,xlon,5)7252 meridians = gen.pretty_int(nlon,xlon,5) 7311 7253 m.drawmeridians(meridians,labels=[True,False,False,True],color="black") 7312 7254 7313 parallels = pretty_int(nlat,xlat,5)7255 parallels = gen.pretty_int(nlat,xlat,5) 7314 7256 m.drawparallels(parallels,labels=[False,True,True,False],color="black") 7315 7257 -
trunk/tools/generic_tools.py
r1175 r1191 68 68 # period_information_360d: Function to provide the information of a given period idate, edate (dates in 69 69 # [YYYY][MM][DD][HH][MI][SS] format) in a 360 years calendar 70 # pretty_int: Function to plot nice intervals 70 71 # printing_dictionary: Function to print the content of a dictionary 71 72 # PolyArea: Function to compute the area of the polygon following 'Shoelace formula' … … 9510 9511 return newlist 9511 9512 9513 9514 def pretty_int(minv,maxv,Nint): 9515 """ Function to plot nice intervals 9516 minv= minimum value 9517 maxv= maximum value 9518 Nint= number of intervals 9519 >>> pretty_int(23.50,67.21,5) 9520 [ 25. 30. 35. 40. 45. 50. 55. 60. 65.] 9521 >>> pretty_int(-23.50,67.21,15) 9522 [ 0. 20. 40. 60.] 9523 >>> pretty_int(14.75,25.25,5) 9524 [ 16. 18. 20. 22. 24.] 9525 >>> pretty_int(-20.,20.,10) 9526 [-20. -15. -10. -5. 0. 5. 10. 15.] 9527 """ 9528 fname = 'pretty_int' 9529 nice_int = [1,2,5] 9530 9531 interval = np.abs(maxv - minv) 9532 9533 if interval < 0.: 9534 print errormsg 9535 print ' ' + fname + ': wrong interval',interval,'!!' 9536 print ' it can not be negative' 9537 quit(-1) 9538 9539 potinterval = np.log10(interval) 9540 Ipotint = int(potinterval) 9541 intvalue = np.float(interval / np.float(Nint)) 9542 9543 # new 9544 potinterval = np.log10(intvalue) 9545 Ipotint = np.floor(potinterval) 9546 9547 # print fname + '; Lluis: interval:', interval, 'intavlue:', intvalue, 'potinterval:', potinterval, \ 9548 # 'Ipotint:', Ipotint, 'intvalue:', intvalue 9549 9550 mindist = 10.e15 9551 for inice in nice_int: 9552 # print inice,':',inice*10.**Ipotint,np.abs(inice*10.**Ipotint - intvalue),mindist 9553 if np.abs(inice*10.**Ipotint - intvalue) < mindist: 9554 mindist = np.abs(inice*10.**Ipotint - intvalue) 9555 closestint = inice 9556 9557 Ibeg = int(minv / (closestint*10.**Ipotint)) 9558 9559 values = [] 9560 val = closestint*(Ibeg)*10.**(Ipotint) 9561 dval = closestint*10.**(Ipotint) 9562 9563 # print 'closestint:',closestint,'Ibeg:',Ibeg,'val:',val,'dval:',dval 9564 9565 while val < maxv: 9566 values.append(val) 9567 val = val + dval 9568 9569 return np.array(values, dtype=np.float) 9570 9512 9571 #quit() 9513 9572
Note: See TracChangeset
for help on using the changeset viewer.