From daa9394f4ef8a8514873037430e953f785170d60 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 11 Oct 2016 16:41:33 -0400 Subject: [PATCH] FIX: fix FancyArrowPatch linestyle oversight when adding the dash-scaling Closes #7224 --- lib/matplotlib/patches.py | 12 ++++---- .../test_arrow_patches/fancyarrow_dash.png | Bin 0 -> 13085 bytes lib/matplotlib/tests/test_arrow_patches.py | 26 ++++++++++++++++++ 3 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_arrow_patches/fancyarrow_dash.png diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index 022821f8bd8f..e212552465dc 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -372,9 +372,8 @@ def set_linewidth(self, w): self._linewidth = float(w) # scale the dash pattern by the linewidth offset, ls = self._us_dashes - self._dashes = mlines._scale_dashes(offset, - ls, - self._linewidth)[1] + self._dashoffset, self._dashes = mlines._scale_dashes( + offset, ls, self._linewidth) self.stale = True def set_lw(self, lw): @@ -417,9 +416,8 @@ def set_linestyle(self, ls): # get the unscalled dash pattern offset, ls = self._us_dashes = mlines._get_dash_pattern(ls) # scale the dash pattern by the linewidth - self._dashes = mlines._scale_dashes(offset, - ls, - self._linewidth)[1] + self._dashoffset, self._dashes = mlines._scale_dashes( + offset, ls, self._linewidth) self.stale = True def set_ls(self, ls): @@ -4271,7 +4269,7 @@ def draw(self, renderer): if self._edgecolor[3] == 0: lw = 0 gc.set_linewidth(lw) - gc.set_linestyle(self._linestyle) + gc.set_dashes(self._dashoffset, self._dashes) gc.set_antialiased(self._antialiased) self._set_gc_clip(gc) diff --git a/lib/matplotlib/tests/baseline_images/test_arrow_patches/fancyarrow_dash.png b/lib/matplotlib/tests/baseline_images/test_arrow_patches/fancyarrow_dash.png new file mode 100644 index 0000000000000000000000000000000000000000..1b1337af06a5cadbf01bdd94ed4d6bf7dabd6bb3 GIT binary patch literal 13085 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 y{mZPCJ3rRs8Al@6@cSJ9^V<;r*Iy8s