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