From 4c463813a3c0b56e07fb10b6ff4704d6e5efde8c Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 4 May 2017 22:37:58 -0400 Subject: [PATCH 1/3] Use original face/edge color to create Poly legend. This ensures that additional settings like hatch colours get set up properly. --- lib/matplotlib/legend_handler.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/legend_handler.py b/lib/matplotlib/legend_handler.py index 1cc81fa0474a..79661119db31 100644 --- a/lib/matplotlib/legend_handler.py +++ b/lib/matplotlib/legend_handler.py @@ -592,6 +592,8 @@ class HandlerPolyCollection(HandlerBase): """ def _update_prop(self, legend_handle, orig_handle): def first_color(colors): + if colors is None: + return None colors = mcolors.to_rgba_array(colors) if len(colors): return colors[0] @@ -602,8 +604,12 @@ def get_first(prop_array): return prop_array[0] else: return None - legend_handle.set_edgecolor(first_color(orig_handle.get_edgecolor())) - legend_handle.set_facecolor(first_color(orig_handle.get_facecolor())) + edgecolor = getattr(orig_handle, '_original_edgecolor', + orig_handle.get_edgecolor()) + legend_handle.set_edgecolor(first_color(edgecolor)) + facecolor = getattr(orig_handle, '_original_facecolor', + orig_handle.get_facecolor()) + legend_handle.set_facecolor(first_color(facecolor)) legend_handle.set_fill(orig_handle.get_fill()) legend_handle.set_hatch(orig_handle.get_hatch()) legend_handle.set_linewidth(get_first(orig_handle.get_linewidths())) From 122bf46ed130177cc31ff11d2fa28bf298ce6870 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 4 May 2017 22:39:45 -0400 Subject: [PATCH 2/3] Also copy hatch color when updating Patches. Fixes #8463. --- lib/matplotlib/patches.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index 2cb21986f8d5..bb52b189329e 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -200,6 +200,7 @@ def update_from(self, other): self._facecolor = other._facecolor self._fill = other._fill self._hatch = other._hatch + self._hatch_color = other._hatch_color # copy the unscaled dash pattern self._us_dashes = other._us_dashes self.set_linewidth(other._linewidth) # also sets dash properties From ae5bb59ebc03b3b90a2f369f20c41c1363a11d8f Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Fri, 5 May 2017 00:04:48 -0400 Subject: [PATCH 3/3] Add test that hatching works in legends. --- .../baseline_images/test_legend/hatching.pdf | Bin 0 -> 11426 bytes .../baseline_images/test_legend/hatching.png | Bin 0 -> 39539 bytes .../baseline_images/test_legend/hatching.svg | 1022 +++++++++++++++++ lib/matplotlib/tests/test_legend.py | 31 + 4 files changed, 1053 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_legend/hatching.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_legend/hatching.png create mode 100644 lib/matplotlib/tests/baseline_images/test_legend/hatching.svg diff --git a/lib/matplotlib/tests/baseline_images/test_legend/hatching.pdf b/lib/matplotlib/tests/baseline_images/test_legend/hatching.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e345dbff7ce5d180de9290af9c91ba9bba61552e GIT binary patch literal 11426 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

Jk~xsG@uXjr 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 E1B}<*kN^Mx literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_legend/hatching.png b/lib/matplotlib/tests/baseline_images/test_legend/hatching.png new file mode 100644 index 0000000000000000000000000000000000000000..9a309c98bb916d03ff591d2ea0a94ac768708629 GIT binary patch literal 39539 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 D5aw+g literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_legend/hatching.svg b/lib/matplotlib/tests/baseline_images/test_legend/hatching.svg new file mode 100644 index 000000000000..a662f64f20a4 --- /dev/null +++ b/lib/matplotlib/tests/baseline_images/test_legend/hatching.svg @@ -0,0 +1,1022 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py index 052e4959c968..d8dd6b979b9a 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -157,6 +157,37 @@ def test_legend_expand(): ax.legend(loc=3, mode=mode, ncol=2) +@image_comparison(baseline_images=['hatching'], remove_text=True, + style='default') +def test_hatching(): + fig, ax = plt.subplots() + + # Patches + patch = plt.Rectangle((0, 0), 0.3, 0.3, hatch='xx', + label='Patch\ndefault color\nfilled') + ax.add_patch(patch) + patch = plt.Rectangle((0.33, 0), 0.3, 0.3, hatch='||', edgecolor='C1', + label='Patch\nexplicit color\nfilled') + ax.add_patch(patch) + patch = plt.Rectangle((0, 0.4), 0.3, 0.3, hatch='xx', fill=False, + label='Patch\ndefault color\nunfilled') + ax.add_patch(patch) + patch = plt.Rectangle((0.33, 0.4), 0.3, 0.3, hatch='||', fill=False, + edgecolor='C1', + label='Patch\nexplicit color\nunfilled') + ax.add_patch(patch) + + # Paths + ax.fill_between([0, .15, .3], [.8, .8, .8], [.9, 1.0, .9], + hatch='+', label='Path\ndefault color') + ax.fill_between([.33, .48, .63], [.8, .8, .8], [.9, 1.0, .9], + hatch='+', edgecolor='C2', label='Path\nexplicit color') + + ax.set_xlim(-0.01, 1.1) + ax.set_ylim(-0.01, 1.1) + ax.legend(handlelength=4, handleheight=4) + + @cleanup def test_legend_remove(): fig = plt.figure()