diff --git a/lib/matplotlib/offsetbox.py b/lib/matplotlib/offsetbox.py index 160ea09318ce..fd4ddef00eb8 100644 --- a/lib/matplotlib/offsetbox.py +++ b/lib/matplotlib/offsetbox.py @@ -1399,11 +1399,15 @@ def get_window_extent(self, renderer=None): # docstring inherited if renderer is None: renderer = self.figure._get_renderer() + self.update_positions(renderer) return Bbox.union([child.get_window_extent(renderer) for child in self.get_children()]) def get_tightbbox(self, renderer=None): # docstring inherited + if renderer is None: + renderer = self.figure._get_renderer() + self.update_positions(renderer) return Bbox.union([child.get_tightbbox(renderer) for child in self.get_children()]) diff --git a/lib/matplotlib/tests/test_offsetbox.py b/lib/matplotlib/tests/test_offsetbox.py index d987e9d6fb04..d9f377a4f4c0 100644 --- a/lib/matplotlib/tests/test_offsetbox.py +++ b/lib/matplotlib/tests/test_offsetbox.py @@ -256,7 +256,8 @@ def test_anchoredtext_horizontal_alignment(): ax.add_artist(text2) -def test_annotationbbox_extents(): +@pytest.mark.parametrize("extent_kind", ["window_extent", "tightbbox"]) +def test_annotationbbox_extents(extent_kind): plt.rcParams.update(plt.rcParamsDefault) fig, ax = plt.subplots(figsize=(4, 3), dpi=100) @@ -283,31 +284,22 @@ def test_annotationbbox_extents(): arrowprops=dict(arrowstyle="->")) ax.add_artist(ab6) - fig.canvas.draw() - renderer = fig.canvas.get_renderer() - # Test Annotation - bb1w = an1.get_window_extent(renderer) - bb1e = an1.get_tightbbox(renderer) + bb1 = getattr(an1, f"get_{extent_kind}")() target1 = [332.9, 242.8, 467.0, 298.9] - assert_allclose(bb1w.extents, target1, atol=2) - assert_allclose(bb1e.extents, target1, atol=2) + assert_allclose(bb1.extents, target1, atol=2) # Test AnnotationBbox - bb3w = ab3.get_window_extent(renderer) - bb3e = ab3.get_tightbbox(renderer) + bb3 = getattr(ab3, f"get_{extent_kind}")() target3 = [-17.6, 129.0, 200.7, 167.9] - assert_allclose(bb3w.extents, target3, atol=2) - assert_allclose(bb3e.extents, target3, atol=2) + assert_allclose(bb3.extents, target3, atol=2) - bb6w = ab6.get_window_extent(renderer) - bb6e = ab6.get_tightbbox(renderer) + bb6 = getattr(ab6, f"get_{extent_kind}")() target6 = [180.0, -32.0, 230.0, 92.9] - assert_allclose(bb6w.extents, target6, atol=2) - assert_allclose(bb6e.extents, target6, atol=2) + assert_allclose(bb6.extents, target6, atol=2) # Test bbox_inches='tight' buf = io.BytesIO()
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: