Revision: 8032 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8032&view=rev Author: leejjoon Date: 2009-12-13 21:03:44 +0000 (Sun, 13 Dec 2009)
Log Message: ----------- fix wrong tick direction at the boudary of floating axes Modified Paths: -------------- trunk/matplotlib/lib/mpl_toolkits/axes_grid/floating_axes.py trunk/matplotlib/lib/mpl_toolkits/axes_grid/grid_helper_curvelinear.py Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid/floating_axes.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/axes_grid/floating_axes.py 2009-12-13 21:02:05 UTC (rev 8031) +++ trunk/matplotlib/lib/mpl_toolkits/axes_grid/floating_axes.py 2009-12-13 21:03:44 UTC (rev 8032) @@ -12,7 +12,7 @@ from mpl_toolkits.axes_grid.axislines import AxisArtistHelper, GridHelperBase from mpl_toolkits.axes_grid.axis_artist import AxisArtist -from matplotlib.transforms import Affine2D +from matplotlib.transforms import Affine2D, IdentityTransform import numpy as np @@ -85,7 +85,7 @@ def get_tick_transform(self, axes): - return axes.transData + return IdentityTransform() #axes.transData def get_tick_iterators(self, axes): """tick_loc, tick_angle, tick_label, (optionally) tick_label""" @@ -99,17 +99,17 @@ lon_levs, lat_levs = np.asarray(lon_levs), np.asarray(lat_levs) if lat_factor is not None: yy0 = lat_levs / lat_factor - dy = 0.01 / lat_factor + dy = 0.001 / lat_factor else: yy0 = lat_levs - dy = 0.01 + dy = 0.001 if lon_factor is not None: xx0 = lon_levs / lon_factor - dx = 0.01 / lon_factor + dx = 0.001 / lon_factor else: xx0 = lon_levs - dx = 0.01 + dx = 0.001 _extremes = self.grid_helper._extremes xmin, xmax = sorted(_extremes[:2]) @@ -121,30 +121,60 @@ mask = (xmin <= xx0) & (xx0 <= xmax) xx0 = xx0[mask] + def transform_xy(x, y): + x1, y1 = grid_finder.transform_xy(x, y) + x2y2 = axes.transData.transform(np.array([x1, y1]).transpose()) + x2, y2 = x2y2.transpose() + return x2, y2 + # find angles if self.nth_coord == 0: xx0 = np.empty_like(yy0) xx0.fill(self.value) - xx1, yy1 = grid_finder.transform_xy(xx0, yy0) - xx2, yy2 = grid_finder.transform_xy(xx0+dx, yy0) - xx3, yy3 = grid_finder.transform_xy(xx0, yy0+dy) + + #yy0_ = yy0.copy() + + xx1, yy1 = transform_xy(xx0, yy0) + + xx00 = xx0.copy() + xx00[xx0+dx>xmax] -= dx + xx1a, yy1a = transform_xy(xx00, yy0) + xx1b, yy1b = transform_xy(xx00+dx, yy0) + + yy00 = yy0.copy() + yy00[yy0+dy>ymax] -= dy + xx2a, yy2a = transform_xy(xx0, yy00) + xx2b, yy2b = transform_xy(xx0, yy00+dy) + labels = self.grid_info["lat_labels"] labels = [l for l, m in zip(labels, mask) if m] elif self.nth_coord == 1: yy0 = np.empty_like(xx0) yy0.fill(self.value) - xx1, yy1 = grid_finder.transform_xy(xx0, yy0) - xx2, yy2 = grid_finder.transform_xy(xx0, yy0+dy) - xx3, yy3 = grid_finder.transform_xy(xx0+dx, yy0) + + #xx0_ = xx0.copy() + xx1, yy1 = transform_xy(xx0, yy0) + + + yy00 = yy0.copy() + yy00[yy0+dy>ymax] -= dy + xx1a, yy1a = transform_xy(xx0, yy00) + xx1b, yy1b = transform_xy(xx0, yy00+dy) + + xx00 = xx0.copy() + xx00[xx0+dx>xmax] -= dx + xx2a, yy2a = transform_xy(xx00, yy0) + xx2b, yy2b = transform_xy(xx00+dx, yy0) + labels = self.grid_info["lon_labels"] labels = [l for l, m in zip(labels, mask) if m] def f1(): - dd = np.arctan2(yy2-yy1, xx2-xx1) # angle normal - dd2 = np.arctan2(yy3-yy1, xx3-xx1) # angle tangent - mm = ((yy2-yy1)==0.) & ((xx2-xx1)==0.) # mask where dd1 is not defined + dd = np.arctan2(yy1b-yy1a, xx1b-xx1a) # angle normal + dd2 = np.arctan2(yy2b-yy2a, xx2b-xx2a) # angle tangent + mm = ((yy1b-yy1a)==0.) & ((xx1b-xx1a)==0.) # mask where dd1 is not defined dd[mm] = dd2[mm]+3.14159/2. #dd += 3.14159 Modified: trunk/matplotlib/lib/mpl_toolkits/axes_grid/grid_helper_curvelinear.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/axes_grid/grid_helper_curvelinear.py 2009-12-13 21:02:05 UTC (rev 8031) +++ trunk/matplotlib/lib/mpl_toolkits/axes_grid/grid_helper_curvelinear.py 2009-12-13 21:03:44 UTC (rev 8032) @@ -8,7 +8,7 @@ from mpl_toolkits.axes_grid.axislines import \ AxisArtistHelper, GridHelperBase from mpl_toolkits.axes_grid.axis_artist import AxisArtist -from matplotlib.transforms import Affine2D +from matplotlib.transforms import Affine2D, IdentityTransform import numpy as np class FixedAxisArtistHelper(AxisArtistHelper.Fixed): @@ -172,7 +172,7 @@ def get_tick_transform(self, axes): - return axes.transData + return IdentityTransform() #axes.transData def get_tick_iterators(self, axes): """tick_loc, tick_angle, tick_label, (optionally) tick_label""" @@ -212,31 +212,57 @@ #xx0, yy0 = xx0[mask], yy0[mask] xx0 = xx0[mask] + def transform_xy(x, y): + x1, y1 = grid_finder.transform_xy(x, y) + x2y2 = axes.transData.transform(np.array([x1, y1]).transpose()) + x2, y2 = x2y2.transpose() + return x2, y2 + # find angles if self.nth_coord == 0: xx0 = np.empty_like(yy0) xx0.fill(self.value) - xx1, yy1 = grid_finder.transform_xy(xx0, yy0) - xx2, yy2 = grid_finder.transform_xy(xx0+dx, yy0) - xx3, yy3 = grid_finder.transform_xy(xx0, yy0+dy) + + xx1, yy1 = transform_xy(xx0, yy0) + + xx00 = xx0.copy() + xx00[xx0+dx>e1] -= dx + xx1a, yy1a = transform_xy(xx00, yy0) + xx1b, yy1b = transform_xy(xx00+dx, yy0) + + xx2a, yy2a = transform_xy(xx0, yy0) + xx2b, yy2b = transform_xy(xx0, yy0+dy) + labels = self.grid_info["lat_labels"] labels = [l for l, m in zip(labels, mask) if m] elif self.nth_coord == 1: yy0 = np.empty_like(xx0) yy0.fill(self.value) - xx1, yy1 = grid_finder.transform_xy(xx0, yy0) - xx2, yy2 = grid_finder.transform_xy(xx0, yy0+dy) - xx3, yy3 = grid_finder.transform_xy(xx0+dx, yy0) + + xx1, yy1 = transform_xy(xx0, yy0) + + xx1a, yy1a = transform_xy(xx0, yy0) + xx1b, yy1b = transform_xy(xx0, yy0+dy) + + xx00 = xx0.copy() + xx00[xx0+dx>e1] -= dx + xx2a, yy2a = transform_xy(xx00, yy0) + xx2b, yy2b = transform_xy(xx00+dx, yy0) + labels = self.grid_info["lon_labels"] labels = [l for l, m in zip(labels, mask) if m] def f1(): - dd = np.arctan2(yy2-yy1, xx2-xx1) # angle normal - dd2 = np.arctan2(yy3-yy1, xx3-xx1) # angle tangent - mm = ((yy2-yy1)==0.) & ((xx2-xx1)==0.) # mask where dd1 is not defined + dd = np.arctan2(yy1b-yy1a, xx1b-xx1a) # angle normal + dd2 = np.arctan2(yy2b-yy2a, xx2b-xx2a) # angle tangent + mm = ((yy1b-yy1a)==0.) & ((xx1b-xx1a)==0.) # mask where dd1 is not defined dd[mm] = dd2[mm]+3.14159/2. + #dd = np.arctan2(yy2-yy1, xx2-xx1) # angle normal + #dd2 = np.arctan2(yy3-yy1, xx3-xx1) # angle tangent + #mm = ((yy2-yy1)==0.) & ((xx2-xx1)==0.) # mask where dd1 is not defined + #dd[mm] = dd2[mm]+3.14159/2. #dd += 3.14159 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Return on Information: Google Enterprise Search pays you back Get the facts. http://p.sf.net/sfu/google-dev2dev _______________________________________________ Matplotlib-checkins mailing list Matplotlib-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins