Skip to content

Commit 79250d1

Browse files
committed
FIX: AnnotationBbox extents before draw
1 parent 060992a commit 79250d1

File tree

2 files changed

+12
-16
lines changed

2 files changed

+12
-16
lines changed

lib/matplotlib/offsetbox.py

+4
Original file line numberDiff line numberDiff line change
@@ -1389,11 +1389,15 @@ def get_window_extent(self, renderer=None):
13891389
# docstring inherited
13901390
if renderer is None:
13911391
renderer = self.figure._get_renderer()
1392+
self.update_positions(renderer)
13921393
return Bbox.union([child.get_window_extent(renderer)
13931394
for child in self.get_children()])
13941395

13951396
def get_tightbbox(self, renderer=None):
13961397
# docstring inherited
1398+
if renderer is None:
1399+
renderer = self.figure._get_renderer()
1400+
self.update_positions(renderer)
13971401
return Bbox.union([child.get_tightbbox(renderer)
13981402
for child in self.get_children()])
13991403

lib/matplotlib/tests/test_offsetbox.py

+8-16
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,8 @@ def test_anchoredtext_horizontal_alignment():
257257
ax.add_artist(text2)
258258

259259

260-
def test_annotationbbox_extents():
260+
@pytest.mark.parametrize("extent_kind", ["window_extent", "tightbbox"])
261+
def test_annotationbbox_extents(extent_kind):
261262
plt.rcParams.update(plt.rcParamsDefault)
262263
fig, ax = plt.subplots(figsize=(4, 3), dpi=100)
263264

@@ -284,31 +285,22 @@ def test_annotationbbox_extents():
284285
arrowprops=dict(arrowstyle="->"))
285286
ax.add_artist(ab6)
286287

287-
fig.canvas.draw()
288-
renderer = fig.canvas.get_renderer()
289-
290288
# Test Annotation
291-
bb1w = an1.get_window_extent(renderer)
292-
bb1e = an1.get_tightbbox(renderer)
289+
bb1 = getattr(an1, f"get_{extent_kind}")()
293290

294291
target1 = [332.9, 242.8, 467.0, 298.9]
295-
assert_allclose(bb1w.extents, target1, atol=2)
296-
assert_allclose(bb1e.extents, target1, atol=2)
292+
assert_allclose(bb1.extents, target1, atol=2)
297293

298294
# Test AnnotationBbox
299-
bb3w = ab3.get_window_extent(renderer)
300-
bb3e = ab3.get_tightbbox(renderer)
295+
bb3 = getattr(ab3, f"get_{extent_kind}")()
301296

302297
target3 = [-17.6, 129.0, 200.7, 167.9]
303-
assert_allclose(bb3w.extents, target3, atol=2)
304-
assert_allclose(bb3e.extents, target3, atol=2)
298+
assert_allclose(bb3.extents, target3, atol=2)
305299

306-
bb6w = ab6.get_window_extent(renderer)
307-
bb6e = ab6.get_tightbbox(renderer)
300+
bb6 = getattr(ab6, f"get_{extent_kind}")()
308301

309302
target6 = [180.0, -32.0, 230.0, 92.9]
310-
assert_allclose(bb6w.extents, target6, atol=2)
311-
assert_allclose(bb6e.extents, target6, atol=2)
303+
assert_allclose(bb6.extents, target6, atol=2)
312304

313305
# Test bbox_inches='tight'
314306
buf = io.BytesIO()

0 commit comments

Comments
 (0)