diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index b3ff25658c78..c25a2bf8fb7f 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -3308,7 +3308,10 @@ def transmute(self, path, mutation_size, linewidth): x0, y0 = path.vertices[0] x1, y1 = path.vertices[1] - if self.beginarrow: + # If there is no room for an arrow and a line, then skip the arrow + has_begin_arrow = (self.beginarrow and + not ((x0 == x1) and (y0 == y1))) + if has_begin_arrow: verticesA, codesA, ddxA, ddyA = \ self._get_arrow_wedge(x1, y1, x0, y0, head_dist, cos_t, sin_t, @@ -3321,7 +3324,9 @@ def transmute(self, path, mutation_size, linewidth): x2, y2 = path.vertices[-2] x3, y3 = path.vertices[-1] - if self.endarrow: + # If there is no room for an arrow and a line, then skip the arrow + has_end_arrow = (self.endarrow and not ((x2 == x3) and (y2 == y3))) + if has_end_arrow: verticesB, codesB, ddxB, ddyB = \ self._get_arrow_wedge(x2, y2, x3, y3, head_dist, cos_t, sin_t, @@ -3338,7 +3343,7 @@ def transmute(self, path, mutation_size, linewidth): path.codes)] _fillable = [False] - if self.beginarrow: + if has_begin_arrow: if self.fillbegin: p = np.concatenate([verticesA, [verticesA[0], verticesA[0]], ]) @@ -3349,7 +3354,7 @@ def transmute(self, path, mutation_size, linewidth): _path.append(Path(verticesA, codesA)) _fillable.append(False) - if self.endarrow: + if has_end_arrow: if self.fillend: _fillable.append(True) p = np.concatenate([verticesB, [verticesB[0],