8000 Merge pull request #18183 from meeseeksmachine/auto-backport-of-pr-17… · matplotlib/matplotlib@9908136 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9908136

Browse files
authored
Merge pull request #18183 from meeseeksmachine/auto-backport-of-pr-17995-on-v3.3.x
Backport PR #17995 on branch v3.3.x (Avoid using Bbox machinery in Path.get_extents; special case polylines.)
2 parents 63bee22 + 662dc23 commit 9908136

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

lib/matplotlib/path.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -588,13 +588,19 @@ def get_extents(self, transform=None, **kwargs):
588588
from .transforms import Bbox
589589
if transform is not None:
590590
self = transform.transform_path(self)
591-
bbox = Bbox.null()
592-
for curve, code in self.iter_bezier(**kwargs):
593-
# places where the derivative is zero can be extrema
594-
_, dzeros = curve.axis_aligned_extrema()
595-
# as can the ends of the curve
596-
bbox.update_from_data_xy(curve([0, *dzeros, 1]), ignore=False)
597-
return bbox
591+
if self.codes is None:
592+
xys = self.vertices
593+
elif len(np.intersect1d(self.codes, [Path.CURVE3, Path.CURVE4])) == 0:
594+
xys = self.vertices[self.codes != Path.CLOSEPOLY]
595+
else:
596+
xys = []
597+
for curve, code in self.iter_bezier(**kwargs):
598+
# places where the derivative is zero can be extrema
599+
_, dzeros = curve.axis_aligned_extrema()
600+
# as can the ends of the curve
601+
xys.append(curve([0, *dzeros, 1]))
602+
xys = np.concatenate(xys)
603+
return Bbox([xys.min(axis=0), xys.max(axis=0)])
598604

599605
def intersects_path(self, other, filled=True):
600606
"""

0 commit comments

Comments
 (0)
0