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

Skip to content

Commit 48c028c

Browse files
committed
FIX: ensure axes marked stale when added text
Slightly reduced duplicate code The `_add_text` is private because this should be refactored out when we move to a single draw tree in the Axes. Closes #5476
1 parent 8196c21 commit 48c028c

3 files changed

Lines changed: 36 additions & 6 deletions

File tree

lib/matplotlib/axes/_axes.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -609,16 +609,14 @@ def text(self, x, y, s, fontdict=None,
609609
else:
610610
t = mtext.Text(
611611
x=x, y=y, text=s)
612-
self._set_artist_props(t)
613612

614613
t.update(default)
615614
if fontdict is not None:
616615
t.update(fontdict)
617616
t.update(kwargs)
618-
self.texts.append(t)
619-
t._remove_method = lambda h: self.texts.remove(h)
620617

621618
t.set_clip_path(self.patch)
619+
self._add_text(t)
622620
return t
623621

624622
@docstring.dedent_interpd
@@ -674,11 +672,9 @@ def annotate(self, *args, **kwargs):
674672
"""
675673
a = mtext.Annotation(*args, **kwargs)
676674
a.set_transform(mtransforms.IdentityTransform())
677-
self._set_artist_props(a)
678675
if 'clip_on' in kwargs:
679676
a.set_clip_path(self.patch)
680-
self.texts.append(a)
681-
a._remove_method = lambda h: self.texts.remove(h)
677+
self._add_text(a)
682678
return a
683679

684680
#### Lines and spans

lib/matplotlib/axes/_base.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1703,6 +1703,16 @@ def add_line(self, line):
17031703
line._remove_method = lambda h: self.lines.remove(h)
17041704
return line
17051705

1706+
def _add_text(self, txt):
1707+
"""
1708+
1709+
"""
1710+
self._set_artist_props(txt)
1711+
self.texts.append(txt)
1712+
txt._remove_method = lambda h: self.texts.remove(h)
1713+
self.stale = True
1714+
return txt
1715+
17061716
def _update_line_limits(self, line):
17071717
"""
17081718
Figures out the data limit of the given line, updating self.dataLim.

lib/matplotlib/tests/test_text.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,3 +369,27 @@ def test_annotation_negative_fig_coords():
369369
xytext=[-50, 100], textcoords='figure pixels',
370370
xy=[-50, 100], xycoords='figure pixels', fontsize=32,
371371
va='top')
372+
373+
374+
@cleanup
375+
def test_text_stale():
376+
fig, (ax1, ax2) = plt.subplots(1, 2)
377+
plt.draw_all()
378+
assert not ax1.stale
379+
assert not ax2.stale
380+
assert not fig.stale
381+
382+
txt1 = ax1.text(.5, .5, 'aardvark')
383+
assert ax1.stale
384+
assert txt1.stale
385+
assert fig.stale
386+
387+
ann1 = ax2.annotate('aardvark', xy=[.5, .5])
388+
assert ax2.stale
389+
assert ann1.stale
390+
assert fig.stale
391+
392+
plt.draw_all()
393+
assert not ax1.stale
394+
assert not ax2.stale
395+
assert not fig.stale

0 commit comments

Comments
 (0)