@@ -2289,41 +2289,45 @@ def _update_line_limits(self, line):
2289
2289
if path .vertices .size == 0 :
2290
2290
return
2291
2291
2292
- line_trans = line .get_transform ()
2292
+ line_trf = line .get_transform ()
2293
2293
2294
- if line_trans == self .transData :
2294
+ if line_trf == self .transData :
2295
2295
data_path = path
2296
-
2297
- elif any (line_trans .contains_branch_seperately (self .transData )):
2298
- # identify the transform to go from line's coordinates
2299
- # to data coordinates
2300
- trans_to_data = line_trans - self .transData
2301
-
2302
- # if transData is affine we can use the cached non-affine component
2303
- # of line's path. (since the non-affine part of line_trans is
2304
- # entirely encapsulated in trans_to_data).
2296
+ elif any (line_trf .contains_branch_seperately (self .transData )):
2297
+ # Compute the transform from line coordinates to data coordinates.
2298
+ trf_to_data = line_trf - self .transData
2299
+ # If transData is affine we can use the cached non-affine component
2300
+ # of line's path (since the non-affine part of line_trf is
2301
+ # entirely encapsulated in trf_to_data).
2305
2302
if self .transData .is_affine :
2306
2303
line_trans_path = line ._get_transformed_path ()
2307
2304
na_path , _ = line_trans_path .get_transformed_path_and_affine ()
2308
- data_path = trans_to_data .transform_path_affine (na_path )
2305
+ data_path = trf_to_data .transform_path_affine (na_path )
2309
2306
else :
2310
- data_path = trans_to_data .transform_path (path )
2307
+ data_path = trf_to_data .transform_path (path )
2311
2308
else :
2312
- # for backwards compatibility we update the dataLim with the
2309
+ # For backwards compatibility we update the dataLim with the
2313
2310
# coordinate range of the given path, even though the coordinate
2314
2311
# systems are completely different. This may occur in situations
2315
2312
# such as when ax.transAxes is passed through for absolute
2316
2313
# positioning.
2317
2314
data_path = path
2318
2315
2319
- if data_path .vertices .size > 0 :
2320
- updatex , updatey = line_trans .contains_branch_seperately (
2321
- self .transData )
2322
- self .dataLim .update_from_path (data_path ,
2323
- self .ignore_existing_data_limits ,
2324
- updatex = updatex ,
2325
- updatey = updatey )
2326
- self .ignore_existing_data_limits = False
2316
+ if not data_path .vertices .size :
2317
+ return
2318
+
2319
+ updatex , updatey = line_trf .contains_branch_seperately (self .transData )
2320
+ if self .name != "rectilinear" :
2321
+ # This block is mostly intended to handle axvline in polar plots,
2322
+ # for which updatey would otherwise be True.
2323
+ if updatex and line_trf == self .get_yaxis_transform ():
2324
+ updatex = False
2325
+ if updatey and line_trf == self .get_xaxis_transform ():
2326
+ updatey = False
2327
+ self .dataLim .update_from_path (data_path ,
2328
+ self .ignore_existing_data_limits ,
2329
+ updatex = updatex , updatey = updatey )
2330
+ self .ignore_existing_data_limits = False
2327
2331
2328
2332
def add_patch (self , p ):
2329
2333
"""
@@ -2354,17 +2358,19 @@ def _update_patch_limits(self, patch):
2354
2358
p = patch .get_path ()
2355
2359
vertices = p .vertices if p .codes is None else p .vertices [np .isin (
2356
2360
p .codes , (mpath .Path .CLOSEPOLY , mpath .Path .STOP ), invert = True )]
2357
- if vertices .size > 0 :
2358
- xys = patch .get_patch_transform ().transform (vertices )
2359
- if patch .get_data_transform () != self .transData :
2360
- patch_to_data = (patch .get_data_transform () -
2361
- self .transData )
2362
- xys = patch_to_data .transform (xys )
2363
-
2364
- updatex , updatey = patch .get_transform ().\
2365
- contains_branch_seperately (self .transData )
2366
- self .update_datalim (xys , updatex = updatex ,
2367
- updatey = updatey )
2361
+ if not vertices .size :
2362
+ return
2363
+ patch_trf = patch .get_transform ()
2364
+ updatex , updatey = patch_trf .contains_branch_seperately (self .transData )
2365
+ if self .name != "rectilinear" :
2366
+ # As in _update_line_limits, but for axvspan.
2367
+ if updatex and patch_trf == self .get_yaxis_transform ():
2368
+ updatex = False
2369
+ if updatey and patch_trf == self .get_xaxis_transform ():
2370
+ updatey = False
2371
+ trf_to_data = patch_trf - self .transData
2372
+ xys = trf_to_data .transform (vertices )
2373
+ self .update_datalim (xys , updatex = updatex , updatey = updatey )
2368
2374
2369
2375
def add_table (self , tab ):
2370
2376
"""
0 commit comments