@@ -1422,25 +1422,35 @@ def _update_ticks(self):
14221422 if (self ._tick_group_visible (self ._major_tick_kw )
14231423 and not isinstance (self .get_major_locator (), NullLocator )):
14241424 major_locs = self .get_majorticklocs ()
1425- major_labels = self .major .formatter .format_ticks (major_locs )
1425+ major_formatter = self .major .formatter
1426+ major_labels = major_formatter .format_ticks (major_locs )
1427+ major_is_custom = not self .isDefault_majfmt
14261428 major_ticks = self .get_major_ticks (len (major_locs ))
14271429 for tick , loc , label in zip (major_ticks , major_locs , major_labels ):
14281430 tick .update_position (loc )
14291431 tick .label1 .set_text (label )
14301432 tick .label2 .set_text (label )
1433+ # Custom formatters can produce labels with different
1434+ # ascenders, so let Text use a common line box for them.
1435+ tick .label1 ._is_ticklabel = major_is_custom
1436+ tick .label2 ._is_ticklabel = major_is_custom
14311437 else :
14321438 major_ticks = []
14331439
14341440 # Check if minor ticks should be computed.
14351441 if (self ._tick_group_visible (self ._minor_tick_kw )
14361442 and not isinstance (self .get_minor_locator (), NullLocator )):
14371443 minor_locs = self .get_minorticklocs ()
1438- minor_labels = self .minor .formatter .format_ticks (minor_locs )
1444+ minor_formatter = self .minor .formatter
1445+ minor_labels = minor_formatter .format_ticks (minor_locs )
1446+ minor_is_custom = not self .isDefault_minfmt
14391447 minor_ticks = self .get_minor_ticks (len (minor_locs ))
14401448 for tick , loc , label in zip (minor_ticks , minor_locs , minor_labels ):
14411449 tick .update_position (loc )
14421450 tick .label1 .set_text (label )
14431451 tick .label2 .set_text (label )
1452+ tick .label1 ._is_ticklabel = minor_is_custom
1453+ tick .label2 ._is_ticklabel = minor_is_custom
14441454 else :
14451455 minor_ticks = []
14461456
0 commit comments