Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e551a27

Browse files
committed
BF: for degenerate polygons, add CLOSEPOLY vertex
1 parent ed4b877 commit e551a27

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

lib/matplotlib/patches.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,13 +1066,21 @@ def set_xy(self, xy):
10661066
----------
10671067
xy : (N, 2) array-like
10681068
The coordinates of the vertices.
1069+
1070+
Notes
1071+
-----
1072+
Unlike `~.path.Path`, we do not ignore the last input vertex. If the
1073+
polygon is meant to be closed, and the last point of the polygon is not
1074+
equal to the first, we assume that the user has not explicitly passed a
1075+
``CLOSEPOLY`` vertex, and add it ourselves.
10691076
"""
10701077
xy = np.asarray(xy)
1078+
N, _ = xy.shape
10711079
if self._closed:
1072-
if len(xy) and (xy[0] != xy[-1]).any():
1080+
if N == 1 or N > 1 and (xy[0] != xy[-1]).any():
10731081
xy = np.concatenate([xy, [xy[0]]])
10741082
else:
1075-
if len(xy) > 2 and (xy[0] == xy[-1]).all():
1083+
if N > 2 and (xy[0] == xy[-1]).all():
10761084
xy = xy[:-1]
10771085
self._path = Path(xy, closed=self._closed)
10781086
self.stale = True

lib/matplotlib/tests/test_patches.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from matplotlib.patches import Polygon, Rectangle, FancyArrowPatch
99
from matplotlib.testing.decorators import image_comparison, check_figures_equal
10+
from matplotlib.transforms import Bbox
1011
import matplotlib.pyplot as plt
1112
from matplotlib import (
1213
collections as mcollections, colors as mcolors, patches as mpatches,
@@ -556,3 +557,9 @@ def test_rotated_arcs():
556557
ax.axvline(0, color="k")
557558
ax.set_axis_off()
558559
ax.set_aspect("equal")
560+
561+
562+
def test_degenerate_polygon():
563+
point = [0, 0]
564+
correct_extents = Bbox([point, point]).extents
565+
assert np.all(Polygon([point]).get_extents().extents == correct_extents)

0 commit comments

Comments
 (0)