1212
1313from mpl_toolkits .axes_grid .axislines import AxisArtistHelper , GridHelperBase
1414from mpl_toolkits .axes_grid .axis_artist import AxisArtist
15- from matplotlib .transforms import Affine2D
15+ from matplotlib .transforms import Affine2D , IdentityTransform
1616import numpy as np
1717
1818
@@ -85,7 +85,7 @@ def get_axislabel_pos_angle(self, axes):
8585
8686
8787 def get_tick_transform (self , axes ):
88- return axes .transData
88+ return IdentityTransform () # axes.transData
8989
9090 def get_tick_iterators (self , axes ):
9191 """tick_loc, tick_angle, tick_label, (optionally) tick_label"""
@@ -99,17 +99,17 @@ def get_tick_iterators(self, axes):
9999 lon_levs , lat_levs = np .asarray (lon_levs ), np .asarray (lat_levs )
100100 if lat_factor is not None :
101101 yy0 = lat_levs / lat_factor
102- dy = 0.01 / lat_factor
102+ dy = 0.001 / lat_factor
103103 else :
104104 yy0 = lat_levs
105- dy = 0.01
105+ dy = 0.001
106106
107107 if lon_factor is not None :
108108 xx0 = lon_levs / lon_factor
109- dx = 0.01 / lon_factor
109+ dx = 0.001 / lon_factor
110110 else :
111111 xx0 = lon_levs
112- dx = 0.01
112+ dx = 0.001
113113
114114 _extremes = self .grid_helper ._extremes
115115 xmin , xmax = sorted (_extremes [:2 ])
@@ -121,30 +121,60 @@ def get_tick_iterators(self, axes):
121121 mask = (xmin <= xx0 ) & (xx0 <= xmax )
122122 xx0 = xx0 [mask ]
123123
124+ def transform_xy (x , y ):
125+ x1 , y1 = grid_finder .transform_xy (x , y )
126+ x2y2 = axes .transData .transform (np .array ([x1 , y1 ]).transpose ())
127+ x2 , y2 = x2y2 .transpose ()
128+ return x2 , y2
129+
124130 # find angles
125131 if self .nth_coord == 0 :
126132 xx0 = np .empty_like (yy0 )
127133 xx0 .fill (self .value )
128- xx1 , yy1 = grid_finder .transform_xy (xx0 , yy0 )
129- xx2 , yy2 = grid_finder .transform_xy (xx0 + dx , yy0 )
130- xx3 , yy3 = grid_finder .transform_xy (xx0 , yy0 + dy )
134+
135+ #yy0_ = yy0.copy()
136+
137+ xx1 , yy1 = transform_xy (xx0 , yy0 )
138+
139+ xx00 = xx0 .copy ()
140+ xx00 [xx0 + dx > xmax ] -= dx
141+ xx1a , yy1a = transform_xy (xx00 , yy0 )
142+ xx1b , yy1b = transform_xy (xx00 + dx , yy0 )
143+
144+ yy00 = yy0 .copy ()
145+ yy00 [yy0 + dy > ymax ] -= dy
146+ xx2a , yy2a = transform_xy (xx0 , yy00 )
147+ xx2b , yy2b = transform_xy (xx0 , yy00 + dy )
148+
131149 labels = self .grid_info ["lat_labels" ]
132150 labels = [l for l , m in zip (labels , mask ) if m ]
133151
134152 elif self .nth_coord == 1 :
135153 yy0 = np .empty_like (xx0 )
136154 yy0 .fill (self .value )
137- xx1 , yy1 = grid_finder .transform_xy (xx0 , yy0 )
138- xx2 , yy2 = grid_finder .transform_xy (xx0 , yy0 + dy )
139- xx3 , yy3 = grid_finder .transform_xy (xx0 + dx , yy0 )
155+
156+ #xx0_ = xx0.copy()
157+ xx1 , yy1 = transform_xy (xx0 , yy0 )
158+
159+
160+ yy00 = yy0 .copy ()
161+ yy00 [yy0 + dy > ymax ] -= dy
162+ xx1a , yy1a = transform_xy (xx0 , yy00 )
163+ xx1b , yy1b = transform_xy (xx0 , yy00 + dy )
164+
165+ xx00 = xx0 .copy ()
166+ xx00 [xx0 + dx > xmax ] -= dx
167+ xx2a , yy2a = transform_xy (xx00 , yy0 )
168+ xx2b , yy2b = transform_xy (xx00 + dx , yy0 )
169+
140170 labels = self .grid_info ["lon_labels" ]
141171 labels = [l for l , m in zip (labels , mask ) if m ]
142172
143173
144174 def f1 ():
145- dd = np .arctan2 (yy2 - yy1 , xx2 - xx1 ) # angle normal
146- dd2 = np .arctan2 (yy3 - yy1 , xx3 - xx1 ) # angle tangent
147- mm = ((yy2 - yy1 )== 0. ) & ((xx2 - xx1 )== 0. ) # mask where dd1 is not defined
175+ dd = np .arctan2 (yy1b - yy1a , xx1b - xx1a ) # angle normal
176+ dd2 = np .arctan2 (yy2b - yy2a , xx2b - xx2a ) # angle tangent
177+ mm = ((yy1b - yy1a )== 0. ) & ((xx1b - xx1a )== 0. ) # mask where dd1 is not defined
148178 dd [mm ] = dd2 [mm ]+ 3.14159 / 2.
149179
150180 #dd += 3.14159
0 commit comments