@@ -2541,27 +2541,15 @@ def handle_single_axis(scale, autoscaleon, shared_axes, interval,
25412541            shared  =  shared_axes .get_siblings (self )
25422542            dl  =  [ax .dataLim  for  ax  in  shared ]
25432543            # ignore non-finite data limits if good limits exist 
2544-             finite_dl  =  [d  for  d  in  dl  if  np .isfinite (d ).all ()]
2545-             if  len (finite_dl ):
2546-                 # if finite limits exist for at least one axis (and the 
2547-                 # other is infinite), restore the finite limits 
2548-                 x_finite  =  [d  for  d  in  dl 
2549-                             if  (np .isfinite (d .intervalx ).all () and 
2550-                                 (d  not  in   finite_dl ))]
2551-                 y_finite  =  [d  for  d  in  dl 
2552-                             if  (np .isfinite (d .intervaly ).all () and 
2553-                                 (d  not  in   finite_dl ))]
2554- 
2555-                 dl  =  finite_dl 
2556-                 dl .extend (x_finite )
2557-                 dl .extend (y_finite )
2558- 
2559-             bb  =  mtransforms .BboxBase .union (dl )
2560-             # Issue 18137 
2561-             # bb can still have infinite limits, so instead compute 
2562-             # finite limits for this 'axis' 
2563-             x_values  =  [getattr (d , interval ) for  d  in  dl ]
2564-             x_values  =  np .sort (np .unique (np .asarray (x_values ).flatten ()))
2544+             # issue 18137: The previous code would allow one subplot with 
2545+             # inifinite data limits to 'clobber' other subplots with finite 
2546+             # data limits. 
2547+             x_values  =  []
2548+             minpos_values  =  []
2549+             for  d  in  dl :
2550+                 x_values .extend (getattr (d , interval ))
2551+                 minpos_values .append (getattr (d , minpos ))
2552+             x_values  =  np .sort (x_values ).flatten ()
25652553            finite_x_values  =  np .extract (np .isfinite (x_values ), x_values )
25662554            if  finite_x_values .size  >=  1 :
25672555                x0 , x1  =  (finite_x_values .min (), finite_x_values .max ())
@@ -2587,7 +2575,7 @@ def handle_single_axis(scale, autoscaleon, shared_axes, interval,
25872575
25882576            # Add the margin in figure space and then transform back, to handle 
25892577            # non-linear scales. 
2590-             minpos  =  getattr ( bb ,  minpos )
2578+             minpos  =  np . min ( minpos_values )
25912579            transform  =  axis .get_transform ()
25922580            inverse_trans  =  transform .inverted ()
25932581            x0 , x1  =  axis ._scale .limit_range_for_scale (x0 , x1 , minpos )
0 commit comments