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

Skip to content

Commit 27c6621

Browse files
Cache ticks within get_tightbbox
1 parent 29e11f8 commit 27c6621

2 files changed

Lines changed: 13 additions & 10 deletions

File tree

lib/matplotlib/axis.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1388,17 +1388,18 @@ def get_tightbbox(self, renderer=None, *, for_layout_only=False):
13881388
return
13891389
if renderer is None:
13901390
renderer = self.get_figure(root=True)._get_renderer()
1391-
# Don't use cached values here - get_tightbbox() is called during
1392-
# layout calculations (e.g., constrained_layout) outside of draw(),
1393-
# and must always recalculate to reflect current state.
1391+
# We need to reset the ticks cache here - get_tightbbox() is called
1392+
# during layout calculations (e.g., constrained_layout) outside of
1393+
# draw(), and must always recalculate to reflect current state.
13941394
self._clear_ticks_cache()
1395-
ticks_to_draw = self._update_ticks(_use_cache=False)
13961395

1397-
self._update_label_position(renderer, _use_cache=False)
1396+
ticks_to_draw = self._update_ticks(_use_cache=True)
1397+
1398+
self._update_label_position(renderer, _use_cache=True)
13981399

13991400
# go back to just this axis's tick labels
14001401
tlb1, tlb2 = self._get_ticklabel_bboxes(ticks_to_draw, renderer,
1401-
_use_cache=False)
1402+
_use_cache=True)
14021403

14031404
self._update_offset_text_position(tlb1, tlb2)
14041405
self.offsetText.set_text(self.major.formatter.get_offset())
@@ -1424,6 +1425,8 @@ def get_tightbbox(self, renderer=None, *, for_layout_only=False):
14241425
bb.y1 = bb.y0 + 1.0
14251426
bboxes.append(bb)
14261427
bboxes = [b for b in bboxes if b._is_finite()]
1428+
self._clear_ticks_cache()
1429+
14271430
if bboxes:
14281431
return mtransforms.Bbox.union(bboxes)
14291432
else:
@@ -1445,6 +1448,8 @@ def draw(self, renderer):
14451448
return
14461449
renderer.open_group(__name__, gid=self.get_gid())
14471450

1451+
self._clear_ticks_cache()
1452+
14481453
ticks_to_draw = self._update_ticks(_use_cache=True)
14491454
tlb1, tlb2 = self._get_ticklabel_bboxes(ticks_to_draw, renderer,
14501455
_use_cache=True)
@@ -1461,10 +1466,8 @@ def draw(self, renderer):
14611466
self.offsetText.draw(renderer)
14621467

14631468
renderer.close_group(__name__)
1464-
self.stale = False
1465-
1466-
# Reset cached values for next draw cycle, in case not called by Axes.draw()
14671469
self._clear_ticks_cache()
1470+
self.stale = False
14681471

14691472
def get_gridlines(self):
14701473
r"""Return this Axis' grid lines as a list of `.Line2D`\s."""

lib/mpl_toolkits/mplot3d/axis3d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,7 @@ def draw(self, renderer):
569569
self.label._transform = self.axes.transData
570570
self.offsetText._transform = self.axes.transData
571571
renderer.open_group("axis3d", gid=self.get_gid())
572+
self._clear_ticks_cache()
572573

573574
# Get general axis information:
574575
mins, maxs, tc, highs = self._get_coord_info()
@@ -629,7 +630,6 @@ def draw(self, renderer):
629630
renderer.close_group('axis3d')
630631
self.stale = False
631632

632-
# Reset cached values for next draw cycle, in case not called by Axes3D.draw()
633633
self._clear_ticks_cache()
634634

635635
@artist.allow_rasterization

0 commit comments

Comments
 (0)