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..9aaf5dc27970 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -488,3 +488,17 @@ 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() + 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() + x02 = leg.get_window_extent(fig.canvas.get_renderer()).x0 + assert pytest.approx(x01*2, 0.1) == x02