Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3c32a8b

Browse files
committed
FIX: AnnotationBbox extents before draw
1 parent 060992a commit 3c32a8b

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

lib/matplotlib/offsetbox.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1389,11 +1389,17 @@ def get_window_extent(self, renderer=None):
13891389
# docstring inherited
13901390
if renderer is None:
13911391
renderer = self.figure._get_renderer()
1392+
if self.stale:
1393+
self.update_positions(renderer)
13921394
return Bbox.union([child.get_window_extent(renderer)
13931395
for child in self.get_children()])
13941396

13951397
def get_tightbbox(self, renderer=None):
13961398
# docstring inherited
1399+
if renderer is None:
1400+
renderer = self.figure._get_renderer()
1401+
if self.stale:
1402+
self.update_positions(renderer)
13971403
return Bbox.union([child.get_tightbbox(renderer)
13981404
for child in self.get_children()])
13991405

lib/matplotlib/tests/test_offsetbox.py

Lines changed: 8 additions & 14 deletions
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,24 @@ def test_annotationbbox_extents():
284285
arrowprops=dict(arrowstyle="->"))
285286
ax.add_artist(ab6)
286287

287-
fig.canvas.draw()
288288
renderer = fig.canvas.get_renderer()
289289

290290
# Test Annotation
291-
bb1w = an1.get_window_extent(renderer)
292-
bb1e = an1.get_tightbbox(renderer)
291+
bb1 = getattr(an1, f"get_{extent_kind}")(renderer)
293292

294293
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)
294+
assert_allclose(bb1.extents, target1, atol=2)
297295

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

302299
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)
300+
assert_allclose(bb3.extents, target3, atol=2)
305301

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

309304
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)
305+
assert_allclose(bb6.extents, target6, atol=2)
312306

313307
# Test bbox_inches='tight'
314308
buf = io.BytesIO()

0 commit comments

Comments
 (0)