Changeset 933 in lmdz_wrf for trunk/tools
- Timestamp:
- Jun 23, 2016, 7:42:13 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/drawing_tools.py
r932 r933 1461 1461 return lonvv, latvv 1462 1462 1463 1464 def 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 1463 1668 ####### ####### ####### ####### ####### ####### ####### ####### ####### ####### 1464 1669 … … 3977 4182 #quit() 3978 4183 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 axes3982 vals= values to transform3983 trans= '|' separated list of operations of transformation3984 'transpose': Transpose matrix of values (x-->y, y-->x)3985 'flip@[x/y]': Flip the given axis3986 d[x/y]v= original values for the [x/y]-axis3987 d[x/y]t= original ticks for the [x/y]-axis3988 d[x/y]l= original tick-labels for the [x/y]-axis3989 d[x/y]tit= original titels for the [x/y]-axis3990 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.53996 >>> for j in range(3):3997 >>> yvals[j,:] = 40.25 + j*0.53998 >>> 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 Latitude4026 Longitude4027 """4028 fname = 'transform'4029 4030 transforms = trans.split('|')4031 Ntransforms = len(transforms)4032 4033 newvals = vals.copy()4034 dvx = False4035 if dxv is not None:4036 newdxv = dxv.copy()4037 dvx = True4038 else:4039 newdxv = None4040 dvy = False4041 if dyv is not None:4042 newdyv = dyv.copy()4043 dvy = True4044 else:4045 newdyv = None4046 4047 dtx = False4048 if dxt is not None:4049 newdxt = dxt.copy()4050 dtx = True4051 else:4052 newdxt = None4053 dty = False4054 if dyt is not None:4055 newdyt = dyt.copy()4056 dty = True4057 else:4058 newdyt = None4059 4060 dlx = False4061 if dxt is not None:4062 newdxl = list(dxl)4063 dlx = True4064 else:4065 newdxl = None4066 dly = False4067 if dyt is not None:4068 newdyl = list(dyl)4069 dly = True4070 else:4071 newdyl = None4072 4073 dTx = False4074 if dxt is not None:4075 newdxtit = str(dxtit)4076 dTx = True4077 else:4078 newdxtit = None4079 dTy = False4080 if dyt is not None:4081 newdytit = str(dytit)4082 dTy = True4083 else:4084 newdytit = None4085 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 errormsg4098 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 errormsg4107 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 errormsg4116 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 errormsg4125 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 errormsg4151 print ' '+ fname + ": transformation '" + transform + "' not ready!!"4152 quit(-1)4153 4154 return newvals, newdxv, newdyv, newdxt, newdyt, newdxl, newdyl, newdxtit, newdytit4155 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.54161 #for j in range(3):4162 # yvals[j,:] = 40.25 + j*0.54163 #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, ndyT4173 #quit()4174 4175 4184 def plot_2D_shadow_time(varsv,vnames,dimxv,dimyv,dimxu,dimyu,dimn,colorbar,vs,uts, \ 4176 4185 vtit,kfig,reva,taxis,tpos,tlabs,ifclose): … … 4651 4660 4652 4661 def 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): 4654 4663 """ Adding labels and other staff to the graph 4655 4664 varsv= 2D values to plot with shading … … 4678 4687 * 'transpose': reverse the axes (x-->y, y-->x) 4679 4688 * '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]: projection4683 * 'cyl', cilindric4684 * 'lcc', lamvbert conformal4685 [res]: resolution:4686 * 'c', crude4687 * 'l', low4688 * 'i', intermediate4689 * 'h', high4690 * 'f', full4691 4689 """ 4692 4690 ## import matplotlib as mpl … … 4700 4698 quit() 4701 4699 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 4702 4711 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 4884 4729 4885 4730 dx=varsv.shape[1] 4886 4731 dy=varsv.shape[0] 4887 4732 4733 x,y = gen.lonlat2D(dimxv,dimyv) 4734 4888 4735 plt.rc('text', usetex=True) 4889 4736 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) 4911 4742 4912 4743 plt.pcolormesh(x, y, varsv, cmap=plt.get_cmap(colorbar), vmin=vs[0], vmax=vs[1]) … … 4915 4746 # contour 4916 4747 ## 4917 print fname + '; Lluis: shapes x:', x.shape,'y:', y.shape, 'varcv:', varcv.shape4918 4748 contkind = ckind.split(',')[0] 4919 4749 if contkind == 'cmap': … … 4925 4755 elif contkind == 'fixsigc': 4926 4756 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) 4928 4758 else: 4929 4759 print errormsg … … 4939 4769 maxcntS = '{:g}'.format(vc[len(vc)-1]) 4940 4770 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) 4962 4773 4963 4774 # 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()]) 4965 4776 4966 4777 # units labels
Note: See TracChangeset
for help on using the changeset viewer.