|
22 | 22 | import matplotlib.image as mimage
|
23 | 23 | import matplotlib.lines as mlines
|
24 | 24 | import matplotlib.patches as mpatches
|
25 |
| -import matplotlib.path as mpath |
26 | 25 | from matplotlib.rcsetup import cycler, validate_axisbelow
|
27 | 26 | import matplotlib.spines as mspines
|
28 | 27 | import matplotlib.table as mtable
|
@@ -2375,10 +2374,18 @@ def _update_patch_limits(self, patch):
|
2375 | 2374 | ((not patch.get_width()) and (not patch.get_height()))):
|
2376 | 2375 | return
|
2377 | 2376 | p = patch.get_path()
|
2378 |
| - vertices = p.vertices if p.codes is None else p.vertices[np.isin( |
2379 |
| - p.codes, (mpath.Path.CLOSEPOLY, mpath.Path.STOP), invert=True)] |
2380 |
| - if not vertices.size: |
2381 |
| - return |
| 2377 | + # Get all vertices on the path |
| 2378 | + # Loop through each sement to get extrema for Bezier curve sections |
| 2379 | + vertices = [] |
| 2380 | + for curve, code in p.iter_bezier(): |
| 2381 | + # Get distance along the curve of any extrema |
| 2382 | + _, dzeros = curve.axis_aligned_extrema() |
| 2383 | + # Calculate vertcies of start, end and any extrema in between |
| 2384 | + vertices.append(curve([0, *dzeros, 1])) |
| 2385 | + |
| 2386 | + if len(vertices): |
| 2387 | + vertices = np.row_stack(vertices) |
| 2388 | + |
2382 | 2389 | patch_trf = patch.get_transform()
|
2383 | 2390 | updatex, updatey = patch_trf.contains_branch_seperately(self.transData)
|
2384 | 2391 | if not (updatex or updatey):
|
|
0 commit comments