Closed
Description
With 3.3.0, computing the bounding box of a degenerate (one-point) polygon throws an error
Code for reproduction
from matplotlib.patches import Polygon
pp=Polygon([[0.,0.]])
pp.get_extents()
Actual outcome
ValueError Traceback (most recent call last)
<ipython-input-3-1312a177eac2> in <module>
----> 1 pp.get_extents()
/usr/lib/python3.8/site-packages/matplotlib/patches.py in get_extents(self)
254 Return the `Patch`'s axis-aligned extents as a `~.transforms.Bbox`.
255 """
--> 256 return self.get_path().get_extents(self.get_transform())
257
258 def get_transform(self):
/usr/lib/python3.8/site-packages/matplotlib/path.py in get_extents(self, transform, **kwargs)
590 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()
/usr/lib/python3.8/site-packages/matplotlib/path.py in iter_bezier(self, **kwargs)
442 if first_vert is None:
443 if code != Path.MOVETO:
--> 444 raise ValueError("Malformed path, must start with MOVETO.")
445 if code == Path.MOVETO: # a point is like "CURVE1"
446 first_vert = verts
ValueError: Malformed path, must start with MOVETO.
Expected outcome
With 3.2:
Bbox([[inf, inf], [-inf, -inf]])
Matplotlib version
- Operating system: Linux x86_64
- Matplotlib version: 3.3.0
- Matplotlib backend (
print(matplotlib.get_backend())
): Qt5Agg - Python version: 3.8.4