From bc32dc4909decefcbac3e13da12367bdb0f26e95 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Wed, 28 Mar 2018 10:41:30 -0700 Subject: [PATCH 1/2] FIX: return proper legend window extent --- lib/matplotlib/legend.py | 2 +- lib/matplotlib/tests/test_legend.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/legend.py b/lib/matplotlib/legend.py index 9094dc5a1bf2..39ffbcc737ba 100644 --- a/lib/matplotlib/legend.py +++ b/lib/matplotlib/legend.py @@ -952,7 +952,7 @@ def get_title(self): def get_window_extent(self, *args, **kwargs): 'Return extent of the legend.' - return self.legendPatch.get_window_extent(*args, **kwargs) + return self._legend_box.get_window_extent(*args, **kwargs) def get_frame_on(self): """Get whether the legend box patch is drawn.""" diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py index 830fe798c44c..1ec2eb55d21f 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -488,3 +488,18 @@ def test_legend_title_empty(): leg = ax.legend() assert leg.get_title().get_text() == "" assert leg.get_title().get_visible() is False + + +def test_legend_proper_window_extent(): + # test that legend returns the expected extent under various dpi... + fig, ax = plt.subplots(dpi=100) + ax.plot(range(10), label='Aardvark') + leg = ax.legend() + x0 = leg.get_window_extent(fig.canvas.get_renderer()).x0 + assert pytest.approx(x0, 0.01) == 1094.375 + + fig, ax = plt.subplots(dpi=200) + ax.plot(range(10), label='Aardvark') + leg = ax.legend() + x0 = leg.get_window_extent(fig.canvas.get_renderer()).x0 + assert pytest.approx(x0, 0.01) == 2189.015625 From 9a03a2d4ae8aec10015c9517b8c7b1f014b6edb4 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Wed, 28 Mar 2018 11:21:16 -0700 Subject: [PATCH 2/2] TST: check that size changes --- lib/matplotlib/tests/test_legend.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py index 1ec2eb55d21f..9aaf5dc27970 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -495,11 +495,10 @@ def test_legend_proper_window_extent(): fig, ax = plt.subplots(dpi=100) ax.plot(range(10), label='Aardvark') leg = ax.legend() - x0 = leg.get_window_extent(fig.canvas.get_renderer()).x0 - assert pytest.approx(x0, 0.01) == 1094.375 + x01 = leg.get_window_extent(fig.canvas.get_renderer()).x0 fig, ax = plt.subplots(dpi=200) ax.plot(range(10), label='Aardvark') leg = ax.legend() - x0 = leg.get_window_extent(fig.canvas.get_renderer()).x0 - assert pytest.approx(x0, 0.01) == 2189.015625 + x02 = leg.get_window_extent(fig.canvas.get_renderer()).x0 + assert pytest.approx(x01*2, 0.1) == x02