Changeset 933 in lmdz_wrf for trunk/tools


Ignore:
Timestamp:
Jun 23, 2016, 7:42:13 PM (9 years ago)
Author:
lfita
Message:

Fixed `transform'
Clarified `plot_2D_shadow_contour_time'

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/drawing_tools.py

    r932 r933  
    14611461    return lonvv, latvv
    14621462
     1463
     1464def transform(vals, trans, dxv='0', dyv='0', dxt='0', dyt='0', dxl='0',         \
     1465  dyl='0', dxtit='0', dytit='0'):
     1466    """ Function to transform the values and the axes
     1467      vals= values to transform
     1468      trans= '|' separated list of operations of transformation
     1469        'transpose': Transpose matrix of values (x-->y, y-->x)
     1470        'flip@[x/y]': Flip the given axis
     1471      d[x/y]v= original values for the [x/y]-axis
     1472      d[x/y]t= original ticks for the [x/y]-axis
     1473      d[x/y]l= original tick-labels for the [x/y]-axis
     1474      d[x/y]tit= original titels for the [x/y]-axis
     1475
     1476    >>> mat = np.arange(15).reshape(3,5)
     1477    >>> xvals = np.zeros((3,5), dtype=np.float)
     1478    >>> yvals = np.zeros((3,5), dtype=np.float)
     1479    >>> for i in range(5):
     1480    >>>     xvals[:,i] = -1.25 + i*0.5
     1481    >>> for j in range(3):
     1482    >>>     yvals[j,:] = 40.25 + j*0.5
     1483    >>> xticks = np.array([-1.25, -0.25, 0.25])
     1484    >>> yticks = np.array([40.25, 41.25])
     1485    >>> xticklab = ['1.25 W', '0.25 W', '0,25 E']
     1486    >>> yticklab = ['40.25 N', '41.25 N']
     1487    >>> xtit = 'Longitude'
     1488    >>> ytit = 'Latitude'
     1489    >>> nv, ndxv, ndyv, ndxt, ndyt, dxl, ndyl, ndxT, ndyT = transform(mat, 'transpose', \
     1490      xvals, yvals, xticks, yticks, xticklab, yticklab, xtit, ytit)
     1491    [[ 0  5 10]
     1492     [ 1  6 11]
     1493     [ 2  7 12]
     1494     [ 3  8 13]
     1495     [ 4  9 14]]
     1496    [[ 40.25  40.75  41.25]
     1497     [ 40.25  40.75  41.25]
     1498     [ 40.25  40.75  41.25]
     1499     [ 40.25  40.75  41.25]
     1500     [ 40.25  40.75  41.25]]
     1501    [[-1.25 -1.25 -1.25]
     1502     [-0.75 -0.75 -0.75]
     1503     [-0.25 -0.25 -0.25]
     1504     [ 0.25  0.25  0.25]
     1505     [ 0.75  0.75  0.75]]
     1506    [ 40.25  41.25]
     1507    [-1.25 -0.25  0.25]
     1508    ['41.25 N', '40.25 N']
     1509    ['0,25 E', '0.25 W', '1.25 W']
     1510    Latitude
     1511    Longitude
     1512    """
     1513    fname = 'transform'
     1514
     1515    transforms = trans.split('|')
     1516    Ntransforms = len(transforms)
     1517
     1518    newvals = vals.copy()
     1519    wdvx = False
     1520    if dxv != '0':
     1521        newdxv = dxv.copy()
     1522        wdvx = True
     1523    else:
     1524        newdxv = None
     1525    wdvy = False
     1526    if dyv != '0':
     1527        newdyv = dyv.copy()
     1528        wdvy = True
     1529    else:
     1530        newdyv = None
     1531
     1532    wdtx = False
     1533    if dxt != '0':
     1534        newdxt = dxt.copy()
     1535        wdtx = True
     1536    else:
     1537        newdxt = None
     1538    wdty = False
     1539    if dyt != '0':
     1540        newdyt = dyt.copy()
     1541        wdty = True
     1542    else:
     1543        newdyt = None
     1544
     1545    wdlx = False
     1546    if dxl != '0':
     1547        newdxl = list(dxl)
     1548        wdlx = True
     1549    else:
     1550        newdxl = None
     1551    wdly = False
     1552    if dyl != '0':
     1553        newdyl = list(dyl)
     1554        wdly = True
     1555    else:
     1556        newdyl = None
     1557
     1558    wdTx = False
     1559    if dxt != '0':
     1560        newdxtit = str(dxtit)
     1561        wdTx = True
     1562    else:
     1563        newdxtit = None
     1564    wdTy = False
     1565    if dyt != '0':
     1566        newdytit = str(dytit)
     1567        wdTy = True
     1568    else:
     1569        newdytit = None
     1570
     1571    dx = newvals.shape[0]
     1572    dy = newvals.shape[1]
     1573
     1574    for transform in transforms:
     1575        if transform == 'transpose':
     1576            newvals = np.transpose(newvals)
     1577            if wdvx and wdvy:
     1578                copy = newdxv.copy()
     1579                newdxv = np.transpose(newdyv)
     1580                newdyv = np.transpose(copy)
     1581#            else:
     1582#                print errormsg
     1583#                print '  ' + fname + ": it can not be '" + transform + "' without " +\
     1584#                  ' both dimxvals:', dxv, ' and dimyvals:', dyv, ' !!'
     1585#                quit(-1)
     1586
     1587            if wdtx and wdtx:
     1588                copy = newdxt.copy()
     1589                newdxt = np.transpose(newdyt)
     1590                newdyt = np.transpose(copy)
     1591#            else:
     1592#                print errormsg
     1593#                print '  ' + fname + ": it can not be '" + transform + "' without " +\
     1594#                  ' both dimxtickvals:', dxt, ' and dimytickvals:', dyt, ' !!'
     1595#                quit(-1)
     1596
     1597            if wdlx and wdly:
     1598                copy = list(newdxl)
     1599                newdxl = list(newdyl[::-1])
     1600                newdyl = list(copy[::-1])
     1601#            else:
     1602#                print errormsg
     1603#                print '  ' + fname + ": it can not be '" + transform + "' without " +\
     1604#                  ' both dimxlabels:', dxl, ' and dimylabels:', dyl, ' !!'
     1605#                quit(-1)
     1606
     1607            if wdTx and wdTy:
     1608                copy = str(newdxtit)
     1609                newdxtit = str(newdytit)
     1610                newdytit = str(copy)
     1611#            else:
     1612#                print errormsg
     1613#                print '  ' + fname + ": it can not be '" + transform + "' without " +\
     1614#                  ' both dimx title:', dxtit, ' and dimytitle:', dytit, ' !!'
     1615#                quit(-1)
     1616
     1617        elif transform[0:4] == 'flip':
     1618            if transform.find('@') == -1:
     1619                print errormsg
     1620                print '  ' + fname + ": no ax given for '" + transform + "' !!"
     1621                quit(-1)
     1622               
     1623            flip = transform.split('@')[1]
     1624            if flip == 'x':
     1625                newvals = newvals[...,::-1]
     1626                if dv:
     1627                    newdxv = newdxv[...,::-1]
     1628                if dt:
     1629                    newdxt = newdxt[::-1]
     1630                if dl:
     1631                    newdxl = newdxl[::-1]
     1632            elif flip == 'y':
     1633                newvals = newvals[...,::-1,:]
     1634                if dv:
     1635                    newdyv = newdyv[...,::-1,:]
     1636                if dt:
     1637                    newdyt = newdyt[::-1]
     1638                if dl:
     1639                    newdyl = newdyl[::-1]
     1640            elif flip == 'z':
     1641                newvals = newvals[...,::-1,:,:]
     1642        else:
     1643            print errormsg
     1644            print '  '+ fname + ": transformation '" + transform + "' not ready!!"
     1645            quit(-1)
     1646
     1647    return newvals, newdxv, newdyv, newdxt, newdyt, newdxl, newdyl, newdxtit, newdytit
     1648
     1649#mat = np.arange(15).reshape(3,5)
     1650#xvals = np.zeros((3,5), dtype=np.float)
     1651#yvals = np.zeros((3,5), dtype=np.float)
     1652#for i in range(5):
     1653#    xvals[:,i] = -1.25 + i*0.5
     1654#for j in range(3):
     1655#    yvals[j,:] = 40.25 + j*0.5
     1656#xticks = np.array([-1.25, -0.25, 0.25])
     1657#yticks = np.array([40.25, 41.25])
     1658#xticklab = ['1.25 W', '0.25 W', '0,25 E']
     1659#yticklab = ['40.25 N', '41.25 N']
     1660#xtit = 'Longitude'
     1661#ytit = 'Latitude'
     1662#nv, ndxv, ndyv, ndxt, ndyt, dxl, ndyl, ndxT, ndyT = transform(mat, 'transpose', \
     1663#      xvals, yvals, xticks, yticks, xticklab, yticklab, xtit, ytit)
     1664
     1665#print nv, ndxv, ndyv, ndxt, ndyt, dxl, ndyl, ndxT, ndyT
     1666#quit()
     1667
    14631668#######    #######    #######    #######    #######    #######    #######    #######    #######    #######
    14641669
     
    39774182#quit()
    39784183
    3979 def transform(vals, trans, dxv= None, dyv= None, dxt= None, dyt= None, dxl= None,    \
    3980   dyl= None, dxtit= None, dytit= None):
    3981     """ Function to transform the values and the axes
    3982       vals= values to transform
    3983       trans= '|' separated list of operations of transformation
    3984         'transpose': Transpose matrix of values (x-->y, y-->x)
    3985         'flip@[x/y]': Flip the given axis
    3986       d[x/y]v= original values for the [x/y]-axis
    3987       d[x/y]t= original ticks for the [x/y]-axis
    3988       d[x/y]l= original tick-labels for the [x/y]-axis
    3989       d[x/y]tit= original titels for the [x/y]-axis
    3990 
    3991     >>> mat = np.arange(15).reshape(3,5)
    3992     >>> xvals = np.zeros((3,5), dtype=np.float)
    3993     >>> yvals = np.zeros((3,5), dtype=np.float)
    3994     >>> for i in range(5):
    3995     >>>     xvals[:,i] = -1.25 + i*0.5
    3996     >>> for j in range(3):
    3997     >>>     yvals[j,:] = 40.25 + j*0.5
    3998     >>> xticks = np.array([-1.25, -0.25, 0.25])
    3999     >>> yticks = np.array([40.25, 41.25])
    4000     >>> xticklab = ['1.25 W', '0.25 W', '0,25 E']
    4001     >>> yticklab = ['40.25 N', '41.25 N']
    4002     >>> xtit = 'Longitude'
    4003     >>> ytit = 'Latitude'
    4004     >>> nv, ndxv, ndyv, ndxt, ndyt, dxl, ndyl, ndxT, ndyT = transform(mat, 'transpose', \
    4005       xvals, yvals, xticks, yticks, xticklab, yticklab, xtit, ytit)
    4006     [[ 0  5 10]
    4007      [ 1  6 11]
    4008      [ 2  7 12]
    4009      [ 3  8 13]
    4010      [ 4  9 14]]
    4011     [[ 40.25  40.75  41.25]
    4012      [ 40.25  40.75  41.25]
    4013      [ 40.25  40.75  41.25]
    4014      [ 40.25  40.75  41.25]
    4015      [ 40.25  40.75  41.25]]
    4016     [[-1.25 -1.25 -1.25]
    4017      [-0.75 -0.75 -0.75]
    4018      [-0.25 -0.25 -0.25]
    4019      [ 0.25  0.25  0.25]
    4020      [ 0.75  0.75  0.75]]
    4021     [ 40.25  41.25]
    4022     [-1.25 -0.25  0.25]
    4023     ['41.25 N', '40.25 N']
    4024     ['0,25 E', '0.25 W', '1.25 W']
    4025     Latitude
    4026     Longitude
    4027     """
    4028     fname = 'transform'
    4029 
    4030     transforms = trans.split('|')
    4031     Ntransforms = len(transforms)
    4032 
    4033     newvals = vals.copy()
    4034     dvx = False
    4035     if dxv is not None:
    4036         newdxv = dxv.copy()
    4037         dvx = True
    4038     else:
    4039         newdxv = None
    4040     dvy = False
    4041     if dyv is not None:
    4042         newdyv = dyv.copy()
    4043         dvy = True
    4044     else:
    4045         newdyv = None
    4046 
    4047     dtx = False
    4048     if dxt is not None:
    4049         newdxt = dxt.copy()
    4050         dtx = True
    4051     else:
    4052         newdxt = None
    4053     dty = False
    4054     if dyt is not None:
    4055         newdyt = dyt.copy()
    4056         dty = True
    4057     else:
    4058         newdyt = None
    4059 
    4060     dlx = False
    4061     if dxt is not None:
    4062         newdxl = list(dxl)
    4063         dlx = True
    4064     else:
    4065         newdxl = None
    4066     dly = False
    4067     if dyt is not None:
    4068         newdyl = list(dyl)
    4069         dly = True
    4070     else:
    4071         newdyl = None
    4072 
    4073     dTx = False
    4074     if dxt is not None:
    4075         newdxtit = str(dxtit)
    4076         dTx = True
    4077     else:
    4078         newdxtit = None
    4079     dTy = False
    4080     if dyt is not None:
    4081         newdytit = str(dytit)
    4082         dTy = True
    4083     else:
    4084         newdytit = None
    4085 
    4086     dx = newvals.shape[0]
    4087     dy = newvals.shape[1]
    4088 
    4089     for transform in transforms:
    4090         if transform == 'transpose':
    4091             newvals = np.transpose(newvals)
    4092             if dvx and dvy:
    4093                 copy = newdxv.copy()
    4094                 newdxv = np.transpose(newdyv)
    4095                 newdyv = np.transpose(copy)
    4096             else:
    4097                 print errormsg
    4098                 print '  ' + fname + ": it can not be '" + transform + "' without " +\
    4099                   ' both dimxvals:', dxv, ' and dimyvals:', dyv, ' !!'
    4100                 quit(-1)
    4101             if dtx and dtx:
    4102                 copy = newdxt.copy()
    4103                 newdxt = np.transpose(newdyt)
    4104                 newdyt = np.transpose(copy)
    4105             else:
    4106                 print errormsg
    4107                 print '  ' + fname + ": it can not be '" + transform + "' without " +\
    4108                   ' both dimxtickvals:', dxt, ' and dimytickvals:', dyt, ' !!'
    4109                 quit(-1)
    4110             if dlx and dly:
    4111                 copy = list(newdxl)
    4112                 newdxl = list(newdyl[::-1])
    4113                 newdyl = list(copy[::-1])
    4114             else:
    4115                 print errormsg
    4116                 print '  ' + fname + ": it can not be '" + transform + "' without " +\
    4117                   ' both dimxlabels:', dxl, ' and dimylabels:', dyl, ' !!'
    4118                 quit(-1)
    4119             if dTx and dTy:
    4120                 copy = str(newdxtit)
    4121                 newdxtit = str(newdytit)
    4122                 newdytit = str(copy)
    4123             else:
    4124                 print errormsg
    4125                 print '  ' + fname + ": it can not be '" + transform + "' without " +\
    4126                   ' both dimx title:', dxtit, ' and dimytitle:', dytit, ' !!'
    4127                 quit(-1)
    4128 
    4129         elif transform[0:4] == 'flip':
    4130             flip = transform.split('@')[1]
    4131             if flip == 'x':
    4132                 newvals = newvals[...,::-1]
    4133                 if dv:
    4134                     newdxv = newdxv[...,::-1]
    4135                 if dt:
    4136                     newdxt = newdxt[::-1]
    4137                 if dl:
    4138                     newdxl = newdxl[::-1]
    4139             elif flip == 'y':
    4140                 newvals = newvals[...,::-1,:]
    4141                 if dv:
    4142                     newdyv = newdyv[...,::-1,:]
    4143                 if dt:
    4144                     newdyt = newdyt[::-1]
    4145                 if dl:
    4146                     newdyl = newdyl[::-1]
    4147             elif flip == 'z':
    4148                 newvals = newvals[...,::-1,:,:]
    4149         else:
    4150             print errormsg
    4151             print '  '+ fname + ": transformation '" + transform + "' not ready!!"
    4152             quit(-1)
    4153 
    4154     return newvals, newdxv, newdyv, newdxt, newdyt, newdxl, newdyl, newdxtit, newdytit
    4155 
    4156 #mat = np.arange(15).reshape(3,5)
    4157 #xvals = np.zeros((3,5), dtype=np.float)
    4158 #yvals = np.zeros((3,5), dtype=np.float)
    4159 #for i in range(5):
    4160 #    xvals[:,i] = -1.25 + i*0.5
    4161 #for j in range(3):
    4162 #    yvals[j,:] = 40.25 + j*0.5
    4163 #xticks = np.array([-1.25, -0.25, 0.25])
    4164 #yticks = np.array([40.25, 41.25])
    4165 #xticklab = ['1.25 W', '0.25 W', '0,25 E']
    4166 #yticklab = ['40.25 N', '41.25 N']
    4167 #xtit = 'Longitude'
    4168 #ytit = 'Latitude'
    4169 #nv, ndxv, ndyv, ndxt, ndyt, dxl, ndyl, ndxT, ndyT = transform(mat, 'transpose', \
    4170 #      xvals, yvals, xticks, yticks, xticklab, yticklab, xtit, ytit)
    4171 
    4172 #print nv, ndxv, ndyv, ndxt, ndyt, dxl, ndyl, ndxT, ndyT
    4173 #quit()
    4174 
    41754184def plot_2D_shadow_time(varsv,vnames,dimxv,dimyv,dimxu,dimyu,dimn,colorbar,vs,uts,   \
    41764185  vtit,kfig,reva,taxis,tpos,tlabs,ifclose):
     
    46514660
    46524661def plot_2D_shadow_contour_time(varsv,varcv,vnames,valv,timv,timpos,timlab,valu,     \
    4653   timeu,axist,dimn,colorbar,ckind,clabfmt,vs,vc,uts,vtit,kfig,reva,mapv):
     4662  timeu,axist,dimn,colorbar,ckind,clabfmt,vs,vc,uts,vtit,kfig,reva):
    46544663    """ Adding labels and other staff to the graph
    46554664      varsv= 2D values to plot with shading
     
    46784687        * 'transpose': reverse the axes (x-->y, y-->x)
    46794688        * 'flip'@[x/y]: flip the axis x or y
    4680       mapv= map characteristics: [proj],[res]
    4681         see full documentation: http://matplotlib.org/basemap/
    4682         [proj]: projection
    4683           * 'cyl', cilindric
    4684           * 'lcc', lamvbert conformal
    4685         [res]: resolution:
    4686           * 'c', crude
    4687           * 'l', low
    4688           * 'i', intermediate
    4689           * 'h', high
    4690           * 'f', full
    46914689    """
    46924690##    import matplotlib as mpl
     
    47004698        quit()
    47014699
     4700    # Usually axis > x must be the time, thus...
     4701    dimxv0 = valv.copy()
     4702    dimyv0 = timv.copy()
     4703    dimxt0 = np.array(pretty_int(valv.min(),valv.max(),10))
     4704    dimyt0 = np.array(timpos)
     4705    dimxl0 = []
     4706    for i in range(len(dimxt0)): dimxl0.append(str(dimxt0[i]))
     4707    dimyl0 = list(timlab)
     4708    dimxT0 = variables_values(dimn[0])[0] + ' (' + units_lunits(valu) + ')'
     4709    dimyT0 = timeu
     4710
    47024711    if axist == 'x':
    4703         dimxv0 = timv.copy()
    4704         dimyv0 = valv.copy()
    4705         dimxt0 = list(timpos)
    4706         dimyt0 = None
    4707         dimxl0 = list(timlab)
    4708         dimyl0 = None
    4709     else:
    4710         dimxv0 = valv.copy()
    4711         dimyv0 = timv.copy()
    4712         dimxt0 = None
    4713         dimyt0 = list(timpos)
    4714         dimxl0 = None
    4715         dimyl0 = list(timlab)
    4716 
    4717     varsv, dimxv, dimyv, dimxt, dimyt, dimxl, dimyl, dimxT, dimyT = transform(varsv, \
    4718       reva, dimxv, dimyv, dimxt, dimyt, dimxl, dimyl)
    4719 
    4720     if reva[0:4] == 'flip':
    4721         reva0 = 'flip'
    4722         if len(reva.split('@')) != 2:
    4723              print errormsg
    4724              print '  ' + fname + ': flip is given', reva, 'but not axis!'
    4725              quit(-1)
    4726     else:
    4727         reva0 = reva
    4728 
    4729     if reva0 == 'transpose':
    4730         if axist == 'x':
    4731             axist = 'y'
    4732         else:
    4733             axist = 'x'
    4734 
    4735     if not mapv is None:
    4736         if len(dimxv[:].shape) == 3:
    4737             lon0 = dimxv[0,]
    4738             lat0 = dimyv[0,]
    4739         elif len(dimxv[:].shape) == 2:
    4740             lon0 = dimxv[:]
    4741             lat0 = dimyv[:]
    4742         elif len(dimxv[:].shape) == 1:
    4743             lon00 = dimxv[:]
    4744             lat00 = dimyv[:]
    4745             lon0 = np.zeros( (len(lat00),len(lon00)), dtype=np.float )
    4746             lat0 = np.zeros( (len(lat00),len(lon00)), dtype=np.float )
    4747 
    4748             for iy in range(len(lat00)):
    4749                 lon0[iy,:] = lon00
    4750             for ix in range(len(lon00)):
    4751                 lat0[:,ix] = lat00
    4752         if reva0 == 'transpose':
    4753             print '  reversing the axes of the figure (x-->y, y-->x)!!'
    4754             varsv = np.transpose(varsv)
    4755             varcv = np.transpose(varcv)
    4756             lon0 = np.transpose(lon0)
    4757             lat0 = np.transpose(lat0)
    4758 
    4759         map_proj=mapv.split(',')[0]
    4760         map_res=mapv.split(',')[1]
    4761 
    4762         dx = lon0.shape[1]
    4763         dy = lon0.shape[0]
    4764 
    4765         nlon = lon0[0,0]
    4766         xlon = lon0[dy-1,dx-1]
    4767         nlat = lat0[0,0]
    4768         xlat = lat0[dy-1,dx-1]
    4769 
    4770 # Thats too much! :)
    4771 #        if lonlatLims is not None:
    4772 #            print '  ' + fname + ': cutting the domain to plot !!!!'
    4773 #            plt.xlim(lonlatLims[0], lonlatLims[2])
    4774 #            plt.ylim(lonlatLims[1], lonlatLims[3])
    4775 #            print '    limits: W-E', lonlatLims[0], lonlatLims[2]
    4776 #            print '    limits: N-S', lonlatLims[1], lonlatLims[3]
    4777 
    4778 #            if map_proj == 'cyl':
    4779 #                nlon = lonlatLims[0]
    4780 #                nlat = lonlatLims[1]
    4781 #                xlon = lonlatLims[2]
    4782 #                xlat = lonlatLims[3]
    4783 #            elif map_proj == 'lcc':
    4784 #                lon2 = (lonlatLims[0] + lonlatLims[2])/2.
    4785 #                lat2 = (lonlatLims[1] + lonlatLims[3])/2.
    4786 #                nlon =  lonlatLims[0]
    4787 #                xlon =  lonlatLims[2]
    4788 #                nlat =  lonlatLims[1]
    4789 #                xlat =  lonlatLims[3]
    4790 
    4791         lon2 = lon0[dy/2,dx/2]
    4792         lat2 = lat0[dy/2,dx/2]
    4793 
    4794         print 'lon2:', lon2, 'lat2:', lat2, 'SW pt:', nlon, ',', nlat, 'NE pt:',     \
    4795           xlon, ',', xlat
    4796 
    4797         if map_proj == 'cyl':
    4798             m = Basemap(projection=map_proj, llcrnrlon=nlon, llcrnrlat=nlat,         \
    4799               urcrnrlon=xlon, urcrnrlat= xlat, resolution=map_res)
    4800         elif map_proj == 'lcc':
    4801             m = Basemap(projection=map_proj, lat_0=lat2, lon_0=lon2, llcrnrlon=nlon, \
    4802               llcrnrlat=nlat, urcrnrlon=xlon, urcrnrlat= xlat, resolution=map_res)
    4803 
    4804         if len(dimxv.shape) == 1:
    4805             lons, lats = np.meshgrid(dimxv, dimyv)
    4806         else:
    4807             if len(dimxv.shape) == 3:
    4808                 lons = dimxv[0,:,:]
    4809                 lats = dimyv[0,:,:]
    4810             else:
    4811                 lons = dimxv[:]
    4812                 lats = dimyv[:]
    4813  
    4814         x,y = m(lons,lats)
    4815 
    4816     else:
    4817         if reva0  == 'transpose':
    4818             print '  reversing the axes of the figure (x-->y, y-->x)!!'
    4819             varsv = np.transpose(varsv)
    4820             varcv = np.transpose(varcv)
    4821             dimn0 = []
    4822             dimn0.append(dimn[1] + '')
    4823             dimn0.append(dimn[0] + '')
    4824             dimn = dimn0
    4825             if len(dimyv.shape) == 2:
    4826                 x = np.transpose(dimyv)
    4827             else:
    4828                 if len(dimxv.shape) == 2:
    4829                     ddx = len(dimyv)
    4830                     ddy = dimxv.shape[1]
    4831                 else:
    4832                     ddx = len(dimyv)
    4833                     ddy = len(dimxv)
    4834    
    4835                 x = np.zeros((ddy,ddx), dtype=np.float)
    4836                 for j in range(ddy):
    4837                     x[j,:] = dimyv
    4838 
    4839             if len(dimxv.shape) == 2:
    4840                 y = np.transpose(dimxv)
    4841             else:
    4842                 if len(dimyv.shape) == 2:
    4843                     ddx = dimyv.shape[0]
    4844                     ddy = len(dimxv)
    4845                 else:
    4846                     ddx = len(dimyv)
    4847                     ddy = len(dimxv)
    4848 
    4849                 y = np.zeros((ddy,ddx), dtype=np.float)
    4850                 for i in range(ddx):
    4851                     y[:,i] = dimxv
    4852         else:
    4853             if len(dimxv.shape) == 2:
    4854                 x = dimxv
    4855             else:
    4856                 if len(dimyv.shape) == 1:
    4857                     x = np.zeros((len(dimyv),len(dimxv)), dtype=np.float)
    4858                     for j in range(len(dimyv)):
    4859                         x[j,:] = dimxv
    4860                 else:
    4861                     x = np.zeros((dimyv.shape), dtype=np.float)
    4862                     if x.shape[0] == dimxv.shape[0]:
    4863                         for j in range(x.shape[1]):
    4864                             x[:,j] = dimxv
    4865                     else:
    4866                         for j in range(x.shape[0]):
    4867                             x[j,:] = dimxv
    4868 
    4869             if len(dimyv.shape) == 2:
    4870                 y = dimyv
    4871             else:
    4872                 if len(dimxv.shape) == 1:
    4873                     y = np.zeros((len(dimyv),len(dimxv)), dtype=np.float)
    4874                     for i in range(len(dimxv)):
    4875                         y[:,i] = dimyv
    4876                 else:
    4877                     y = np.zeros((dimxv.shape), dtype=np.float)
    4878                     if y.shape[0] == dimyv.shape[0]:
    4879                         for i in range(y.shape[1]):
    4880                             y[:,i] = dimyv
    4881                     else:
    4882                         for i in range(y.shape[0]):
    4883                             y[i,:] = dimyv
     4712        reva = 'transpose'
     4713
     4714    if reva is not None:
     4715        varcv, dimxv, dimyv, dimxt, dimyt, dimxl, dimyl, dimxT, dimyT =              \
     4716          transform(varcv, reva)
     4717        varsv, dimxv, dimyv, dimxt, dimyt, dimxl, dimyl, dimxT, dimyT =              \
     4718          transform(varsv, reva, dxv=dimxv0, dyv=dimyv0, dxt=dimxt0, dyt=dimyt0,     \
     4719          dxl=dimxl0, dyl=dimyl0, dxtit=dimxT0, dytit=dimyT0)
     4720    else:
     4721        dimxv = dimxv0
     4722        dimyv = dimyv0
     4723        dimxt = dimxt0
     4724        dimyt = dimyt0
     4725        dimxl = dimxl0
     4726        dimyl = dimyl0
     4727        dimxT = dimxT0
     4728        dimyT = dimyT0
    48844729
    48854730    dx=varsv.shape[1]
    48864731    dy=varsv.shape[0]
    4887    
     4732
     4733    x,y = gen.lonlat2D(dimxv,dimyv)
     4734
    48884735    plt.rc('text', usetex=True)
    48894736
    4890     if axist == 'x':
    4891         valpos = pretty_int(y.min(),y.max(),10)
    4892         vallabels = list(valpos)
    4893         for i in range(len(vallabels)): vallabels[i] = str(vallabels[i])
    4894     else:
    4895         valpos = pretty_int(x.min(),x.max(),10)
    4896         vallabels = list(valpos)
    4897         for i in range(len(vallabels)): vallabels[i] = str(vallabels[i])
    4898 
    4899     if reva0 == 'flip':
    4900         if reva.split('@')[1] == 'x':
    4901             varsv[:,0:dx-1] = varsv[:,dx-1:0:-1]
    4902             varcv[:,0:dx-1] = varcv[:,dx-1:0:-1]
    4903             plt.xticks(valpos, vallabels[::-1])
    4904         else:
    4905             varsv[0:dy-1,:] = varsv[dy-1:0:-1,:]
    4906             varcv[0:dy-1,:] = varcv[dy-1:0:-1,:]
    4907             plt.yticks(valpos, vallabels[::-1])
    4908     else:
    4909         plt.xlim(0,dx-1)
    4910         plt.ylim(0,dy-1)
     4737    plt.xticks(dimxt, dimxl)
     4738    plt.yticks(dimyt, dimyl)
     4739
     4740    plt.xlim(0,dx)
     4741    plt.ylim(0,dy)
    49114742
    49124743    plt.pcolormesh(x, y, varsv, cmap=plt.get_cmap(colorbar), vmin=vs[0], vmax=vs[1])
     
    49154746# contour
    49164747##
    4917     print fname + '; Lluis: shapes x:', x.shape,'y:', y.shape, 'varcv:', varcv.shape
    49184748    contkind = ckind.split(',')[0]
    49194749    if contkind == 'cmap':
     
    49254755    elif  contkind == 'fixsigc':
    49264756        coln = ckind.split(',')[1]
    4927         cplot = plt.contour(x, y, varcv.transpose(), levels=vc, colors=coln)
     4757        cplot = plt.contour(x, y, varcv, levels=vc, colors=coln)
    49284758    else:
    49294759        print errormsg
     
    49394769        maxcntS = '{:g}'.format(vc[len(vc)-1])       
    49404770
    4941     if not mapv is None:
    4942         m.drawcoastlines()
    4943 
    4944         meridians = pretty_int(nlon,xlon,5)
    4945         m.drawmeridians(meridians,labels=[True,False,False,True])
    4946         parallels = pretty_int(nlat,xlat,5)
    4947         m.drawparallels(parallels,labels=[False,True,True,False])
    4948 
    4949         plt.xlabel('W-E')
    4950         plt.ylabel('S-N')
    4951     else:
    4952         if axist == 'x':
    4953             plt.xlabel(timeu)
    4954             plt.xticks(timpos, timlab)
    4955             plt.ylabel(variables_values(dimn[0])[0] + ' (' + units_lunits(valu) + ')')
    4956             plt.yticks(valpos, vallabels)
    4957         else:
    4958             plt.xlabel(variables_values(dimn[1])[0] + ' (' + units_lunits(valu) + ')')
    4959             plt.xticks(valpos, vallabels)
    4960             plt.ylabel(timeu)
    4961             plt.yticks(timpos, timlab)
     4771    plt.xlabel(dimxT)
     4772    plt.ylabel(dimyT)
    49624773
    49634774# set the limits of the plot to the limits of the data
    4964     plt.axis([x.min(), x.max(), y.min(), y.max()])
     4775    plt.axis([dimxv.min(), dimxv.max(), dimyv.min(), dimyv.max()])
    49654776
    49664777# units labels
Note: See TracChangeset for help on using the changeset viewer.