@@ -3805,7 +3805,7 @@ def format_deltas(key, dx, dy):
3805
3805
dy = dy / abs (dy ) * abs (dx )
3806
3806
else :
3807
3807
dx = dx / abs (dx ) * abs (dy )
3808
- return ( dx , dy )
3808
+ return dx , dy
3809
3809
3810
3810
p = self ._pan_start
3811
3811
dx = x - p .x
@@ -3814,29 +3814,30 @@ def format_deltas(key, dx, dy):
3814
3814
return
3815
3815
if button == 1 :
3816
3816
dx , dy = format_deltas (key , dx , dy )
3817
- result = p .bbox .translated (- dx , - dy ) \
3818
- .transformed (p .trans_inverse )
3817
+ result = p .bbox .translated (- dx , - dy ).transformed (p .trans_inverse )
3819
3818
elif button == 3 :
3820
3819
try :
3821
- dx = - dx / float ( self .bbox .width )
3822
- dy = - dy / float ( self .bbox .height )
3820
+ dx = - dx / self .bbox .width
3821
+ dy = - dy / self .bbox .height
3823
3822
dx , dy = format_deltas (key , dx , dy )
3824
3823
if self .get_aspect () != 'auto' :
3825
- dx = 0.5 * (dx + dy )
3826
- dy = dx
3827
-
3824
+ dx = dy = 0.5 * (dx + dy )
3828
3825
alpha = np .power (10.0 , (dx , dy ))
3829
3826
start = np .array ([p .x , p .y ])
3830
3827
oldpoints = p .lim .transformed (p .trans )
3831
3828
newpoints = start + alpha * (oldpoints - start )
3832
- result = mtransforms .Bbox (newpoints ) \
3833
- .transformed (p .trans_inverse )
3829
+ result = ( mtransforms .Bbox (newpoints )
3830
+ .transformed (p .trans_inverse ) )
3834
3831
except OverflowError :
3835
3832
warnings .warn ('Overflow while panning' )
3836
3833
return
3837
3834
3838
- self .set_xlim (* result .intervalx )
3839
- self .set_ylim (* result .intervaly )
3835
+ valid = np .isfinite (result .transformed (p .trans ))
3836
+ points = result .get_points ().astype (object )
3837
+ # Just ignore invalid limits (typically, underflow in log-scale).
3838
+ points [~ valid ] = None
3839
+ self .set_xlim (points [:, 0 ])
3840
+ self .set_ylim (points [:, 1 ])
3840
3841
3841
3842
@cbook .deprecated ("2.1" )
3842
3843
def get_cursor_props (self ):
0 commit comments