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

Skip to content

Commit 8d780a2

Browse files
Cache ticks within get_tightbbox
1 parent 3e76904 commit 8d780a2

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
@@ -1376,17 +1376,18 @@ def get_tightbbox(self, renderer=None, *, for_layout_only=False):
13761376
return
13771377
if renderer is None:
13781378
renderer = self.get_figure(root=True)._get_renderer()
1379-
# Don't use cached values here - get_tightbbox() is called during
1380-
# layout calculations (e.g., constrained_layout) outside of draw(),
1381-
# and must always recalculate to reflect current state.
1379+
# We need to reset the ticks cache here - get_tightbbox() is called
1380+
# during layout calculations (e.g., constrained_layout) outside of
1381+
# draw(), and must always recalculate to reflect current state.
13821382
self._clear_ticks_cache()
1383-
ticks_to_draw = self._update_ticks(_use_cache=False)
13841383

1385-
self._update_label_position(renderer, _use_cache=False)
1384+
ticks_to_draw = self._update_ticks(_use_cache=True)
1385+
1386+
self._update_label_position(renderer, _use_cache=True)
13861387

13871388
# go back to just this axis's tick labels
13881389
tlb1, tlb2 = self._get_ticklabel_bboxes(ticks_to_draw, renderer,
1389-
_use_cache=False)
1390+
_use_cache=True)
13901391

13911392
self._update_offset_text_position(tlb1, tlb2)
13921393
self.offsetText.set_text(self.major.formatter.get_offset())
@@ -1412,6 +1413,8 @@ def get_tightbbox(self, renderer=None, *, for_layout_only=False):
14121413
bb.y1 = bb.y0 + 1.0
14131414
bboxes.append(bb)
14141415
bboxes = [b for b in bboxes if b._is_finite()]
1416+
self._clear_ticks_cache()
1417+
14151418
if bboxes:
14161419
return mtransforms.Bbox.union(bboxes)
14171420
else:
@@ -1433,6 +1436,8 @@ def draw(self, renderer):
14331436
return
14341437
renderer.open_group(__name__, gid=self.get_gid())
14351438

1439+
self._clear_ticks_cache()
1440+
14361441
ticks_to_draw = self._update_ticks(_use_cache=True)
14371442
tlb1, tlb2 = self._get_ticklabel_bboxes(ticks_to_draw, renderer,
14381443
_use_cache=True)
@@ -1449,10 +1454,8 @@ def draw(self, renderer):
14491454
self.offsetText.draw(renderer)
14501455

14511456
renderer.close_group(__name__)
1452-
self.stale = False
1453-
1454-
# Reset cached values for next draw cycle, in case not called by Axes.draw()
14551457
self._clear_ticks_cache()
1458+
self.stale = False
14561459

14571460
def get_gridlines(self):
14581461
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)