Changeset 1191 in lmdz_wrf for trunk


Ignore:
Timestamp:
Oct 17, 2016, 4:50:51 PM (9 years ago)
Author:
lfita
Message:

Moving `pretty_int' from 'drawing_tools' to 'generic_tools'

Location:
trunk/tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/drawing_tools.py

    r1190 r1191  
    4747# units_lunits:
    4848# ASCII_LaTeX:
    49 # pretty_int:
    5049# DegGradSec_deg:
    5150# intT2dt:
     
    19771976    return newln
    19781977
    1979 def pretty_int(minv,maxv,Nint):
    1980     """ Function to plot nice intervals
    1981       minv= minimum value
    1982       maxv= maximum value
    1983       Nint= number of intervals
    1984     >>> 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 errormsg
    2000         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 # new
    2009     potinterval = np.log10(intvalue)
    2010     Ipotint = np.floor(potinterval)
    2011 
    2012 #    print fname + '; Lluis: interval:', interval, 'intavlue:', intvalue, 'potinterval:', potinterval, \
    2013 #     'Ipotint:', Ipotint, 'intvalue:', intvalue
    2014 
    2015     mindist = 10.e15
    2016     for inice in nice_int:
    2017 #        print inice,':',inice*10.**Ipotint,np.abs(inice*10.**Ipotint - intvalue),mindist
    2018         if np.abs(inice*10.**Ipotint - intvalue) < mindist:
    2019             mindist = np.abs(inice*10.**Ipotint - intvalue)
    2020             closestint = inice
    2021 
    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:',dval
    2029 
    2030     while val < maxv:
    2031         values.append(val)
    2032         val = val + dval
    2033 
    2034     return np.array(values, dtype=np.float)
    2035 
    20361978def DegGradSec_deg(grad,deg,sec):
    20371979    """ Function to transform from a coordinate in grad deg sec to degrees (decimal)
     
    31603102        m.drawcoastlines()
    31613103
    3162         meridians = pretty_int(nlon,xlon,5)
     3104        meridians = gen.pretty_int(nlon,xlon,5)
    31633105        m.drawmeridians(meridians,labels=[True,False,False,True])
    31643106
    3165         parallels = pretty_int(nlat,xlat,5)
     3107        parallels = gen.pretty_int(nlat,xlat,5)
    31663108        m.drawparallels(parallels,labels=[False,True,True,False])
    31673109    else:
     
    33683310#            if (nlon > 180.): nlon0 = nlon - 360.
    33693311#            if (xlon > 180.): xlon0 = xlon - 360.
    3370 #            meridians = pretty_int(nlon0,xlon0,5)           
     3312#            meridians = gen.pretty_int(nlon0,xlon0,5)           
    33713313#            meridians = np.where(meridians < 0., meridians + 360., meridians)
    33723314#        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)
    33763318
    33773319        m.drawmeridians(meridians,labels=[True,False,False,True])
    3378         parallels = pretty_int(nlat,xlat,5)
     3320        parallels = gen.pretty_int(nlat,xlat,5)
    33793321        m.drawparallels(parallels,labels=[False,True,True,False])
    33803322
     
    36433585        m.drawcoastlines()
    36443586
    3645         meridians = pretty_int(nlon,xlon,5)
     3587        meridians = gen.pretty_int(nlon,xlon,5)
    36463588        m.drawmeridians(meridians,labels=[True,False,False,True])
    36473589
    3648         parallels = pretty_int(nlat,xlat,5)
     3590        parallels = gen.pretty_int(nlat,xlat,5)
    36493591        m.drawparallels(parallels,labels=[False,True,True,False])
    36503592
     
    38063748        m.drawcoastlines()
    38073749
    3808         meridians = pretty_int(nlon,xlon,5)
     3750        meridians = gen.pretty_int(nlon,xlon,5)
    38093751        m.drawmeridians(meridians,labels=[True,False,False,True])
    38103752
    3811         parallels = pretty_int(nlat,xlat,5)
     3753        parallels = gen.pretty_int(nlat,xlat,5)
    38123754        m.drawparallels(parallels,labels=[False,True,True,False])
    38133755
     
    39613903        m.drawcoastlines()
    39623904
    3963         meridians = pretty_int(nlon,xlon,5)
     3905        meridians = gen.pretty_int(nlon,xlon,5)
    39643906        m.drawmeridians(meridians,labels=[True,False,False,True])
    39653907
    3966         parallels = pretty_int(nlat,xlat,5)
     3908        parallels = gen.pretty_int(nlat,xlat,5)
    39673909        m.drawparallels(parallels,labels=[False,True,True,False])
    39683910
     
    40573999
    40584000    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]))
    40604002    elif xaxv[0] == 'Nfix':
    40614003        dimxt0 = np.arange(dxn,dxx,(dxx-dxn)/(1.*xaxv[2]))
     
    40634005        dimxt0 = np.arange(0,dxx,xaxv[2])
    40644006    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]))
    40664008    elif yaxv[0] == 'Nfix':
    40674009        dimyt0 = np.arange(dyn,dyx,(dyx-dyn)/(1.*yaxv[2]))
     
    42004142            m.drawcoastlines()
    42014143
    4202         meridians = pretty_int(nlon,xlon,xaxv[2])
     4144        meridians = gen.pretty_int(nlon,xlon,xaxv[2])
    42034145        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])
    42054147        m.drawparallels(parallels,labels=[False,True,True,False])
    42064148
     
    42174159#    print 'x min:', x.min(),'max:',x.max()
    42184160#    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)
    42214163#    txlabels = list(txpos)
    42224164#    for i in range(len(txlabels)): txlabels[i] = '{:6g}'.format(txlabels[i])
     
    42974239        txlabels = tlabs
    42984240        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)
    43004242        tylabels = list(typos)
    43014243        for i in range(len(tylabels)): tylabels[i] = str(tylabels[i])
     
    43034245          units_lunits(dimyu) + ')'
    43044246    else:
    4305         txpos = pretty_int(np.min(dimxv),np.max(dimxv),10)
     4247        txpos = gen.pretty_int(np.min(dimxv),np.max(dimxv),10)
    43064248        txlabels = list(txpos)
    43074249        plxlabel = variables_values(dimn[1])[0].replace('_','\_') + ' (' +           \
     
    45394481
    45404482    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]))
    45424484    elif xaxv[0] == 'Nfix':
    45434485        dimxt0 = np.arange(0.,1.,1./xaxv[2])
     
    45464488        dimxt0 = np.arange(0,dxx,xaxv[2])
    45474489    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]))
    45494491    elif yaxv[0] == 'Nfix':
    45504492        dimyt0 = np.arange(0.,1.,1./yaxv[2])
     
    47074649        m.drawcoastlines()
    47084650
    4709         meridians = pretty_int(nlon,xlon,5)
     4651        meridians = gen.pretty_int(nlon,xlon,5)
    47104652        m.drawmeridians(meridians,labels=[True,False,False,True])
    4711         parallels = pretty_int(nlat,xlat,5)
     4653        parallels = gen.pretty_int(nlat,xlat,5)
    47124654        m.drawparallels(parallels,labels=[False,True,True,False])
    47134655
     
    47484690#      vals2[j,i]=np.sqrt((j-Nvals/2)**2. + (i-Nvals/2)**2.) - Nvals/2
    47494691
    4750 #prettylev=pretty_int(-Nvals/2,Nvals/2,10)
     4692#prettylev=gen.pretty_int(-Nvals/2,Nvals/2,10)
    47514693
    47524694#plot_2D_shadow_contour(vals1, vals2, ['var1', 'var2'], np.arange(50)*1.,             \
     
    48194761    # Time ticks-labels are already given from another function
    48204762    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]))
    48224764    elif xaxv[0] == 'Nfix':
    48234765        dimxt0 = np.arange(0.,1.+1./xaxv[2],1./xaxv[2])
     
    53425284        m.drawcoastlines()
    53435285
    5344         meridians = pretty_int(nlon,xlon,5)
     5286        meridians = gen.pretty_int(nlon,xlon,5)
    53455287        m.drawmeridians(meridians,labels=[True,False,False,True])
    5346         parallels = pretty_int(nlat,xlat,5)
     5288        parallels = gen.pretty_int(nlat,xlat,5)
    53475289        m.drawparallels(parallels,labels=[False,True,True,False])
    53485290
     
    53695311        plt.plot(x[0,:], newlinv, '-', color=colln, linewidth=2)
    53705312
    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)
    53735315    txlabels = list(txpos)
    53745316    for i in range(len(txlabels)): txlabels[i] = str(txlabels[i])
     
    53765318    for i in range(len(tylabels)): tylabels[i] = str(tylabels[i])
    53775319
    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))
    53795321    for it in range(len(tllabels)):
    53805322        yval = (tllabels[it]*b+a)
     
    53975339        plt.yticks(typos, tylabels)
    53985340
    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))
    54005342    for it in range(len(tllabels)):
    54015343        plt.annotate(tllabels[it], xy=(1.01,tllabels[it]/np.max(varlv)), xycoords='axes fraction')
     
    61346076        m.drawcoastlines()
    61356077
    6136         meridians = pretty_int(nlon,xlon,5)
     6078        meridians = gen.pretty_int(nlon,xlon,5)
    61376079        m.drawmeridians(meridians,labels=[True,False,False,True],color="black")
    61386080
    6139         parallels = pretty_int(nlat,xlat,5)
     6081        parallels = gen.pretty_int(nlat,xlat,5)
    61406082        m.drawparallels(parallels,labels=[False,True,True,False],color="black")
    61416083
     
    62646206        m.drawcoastlines()
    62656207
    6266         meridians = pretty_int(nlon,xlon,5)
     6208        meridians = gen.pretty_int(nlon,xlon,5)
    62676209        m.drawmeridians(meridians,labels=[True,False,False,True])
    62686210
    6269         parallels = pretty_int(nlat,xlat,5)
     6211        parallels = gen.pretty_int(nlat,xlat,5)
    62706212        m.drawparallels(parallels,labels=[False,True,True,False])
    62716213#    else:
     
    64196361        m.drawcoastlines()
    64206362
    6421         meridians = pretty_int(nlon,xlon,5)
     6363        meridians = gen.pretty_int(nlon,xlon,5)
    64226364        m.drawmeridians(meridians,labels=[True,False,False,True],color="black")
    64236365
    6424         parallels = pretty_int(nlat,xlat,5)
     6366        parallels = gen.pretty_int(nlat,xlat,5)
    64256367        m.drawparallels(parallels,labels=[False,True,True,False],color="black")
    64266368
     
    65906532        if drawcountry: m.drawcountries()
    65916533
    6592         meridians = pretty_int(nlon,xlon,5)
     6534        meridians = gen.pretty_int(nlon,xlon,5)
    65936535        m.drawmeridians(meridians,labels=[True,False,False,True],color="black")
    65946536
    6595         parallels = pretty_int(nlat,xlat,5)
     6537        parallels = gen.pretty_int(nlat,xlat,5)
    65966538        m.drawparallels(parallels,labels=[False,True,True,False],color="black")
    65976539
     
    68096751        if drawcountry: m.drawcountries()
    68106752
    6811         meridians = pretty_int(nlon,xlon,5)
     6753        meridians = gen.pretty_int(nlon,xlon,5)
    68126754        m.drawmeridians(meridians,labels=[True,False,False,True],color="black")
    68136755
    6814         parallels = pretty_int(nlat,xlat,5)
     6756        parallels = gen.pretty_int(nlat,xlat,5)
    68156757        m.drawparallels(parallels,labels=[False,True,True,False],color="black")
    68166758
     
    69686910        m.drawcoastlines()
    69696911
    6970         meridians = pretty_int(nlon,xlon,5)
     6912        meridians = gen.pretty_int(nlon,xlon,5)
    69716913        m.drawmeridians(meridians,labels=[True,False,False,True],color="black")
    69726914
    6973         parallels = pretty_int(nlat,xlat,5)
     6915        parallels = gen.pretty_int(nlat,xlat,5)
    69746916        m.drawparallels(parallels,labels=[False,True,True,False],color="black")
    69756917
     
    73087250        m.drawcoastlines()
    73097251
    7310         meridians = pretty_int(nlon,xlon,5)
     7252        meridians = gen.pretty_int(nlon,xlon,5)
    73117253        m.drawmeridians(meridians,labels=[True,False,False,True],color="black")
    73127254
    7313         parallels = pretty_int(nlat,xlat,5)
     7255        parallels = gen.pretty_int(nlat,xlat,5)
    73147256        m.drawparallels(parallels,labels=[False,True,True,False],color="black")
    73157257
  • trunk/tools/generic_tools.py

    r1175 r1191  
    6868# period_information_360d: Function to provide the information of a given period idate, edate (dates in
    6969#  [YYYY][MM][DD][HH][MI][SS] format) in a 360 years calendar
     70# pretty_int: Function to plot nice intervals
    7071# printing_dictionary: Function to print the content of a dictionary
    7172# PolyArea: Function to compute the area of the polygon following 'Shoelace formula'
     
    95109511    return newlist
    95119512
     9513
     9514def 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
    95129571#quit()
    95139572
Note: See TracChangeset for help on using the changeset viewer.