Computing the bounding box of a degenerate polygon throws an error · Issue #17975 · matplotlib/matplotlib · GitHub
Skip to content

Computing the bounding box of a degenerate polygon throws an error #17975

Description

@antonio-rojas

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions