@@ -1536,6 +1536,11 @@ def set_major_formatter(self, formatter):
15361536 formatter : `~matplotlib.ticker.Formatter`
15371537 """
15381538 cbook ._check_isinstance (mticker .Formatter , formatter = formatter )
1539+ if (isinstance (formatter , mticker .FixedFormatter )
1540+ and len (formatter .seq ) > 0
1541+ and not isinstance (self .major .locator , mticker .FixedLocator )):
1542+ cbook ._warn_external ('FixedFormatter should only be used together '
1543+ 'with FixedLocator' )
15391544 self .isDefault_majfmt = False
15401545 self .major .formatter = formatter
15411546 formatter .set_axis (self )
@@ -1550,6 +1555,11 @@ def set_minor_formatter(self, formatter):
15501555 formatter : `~matplotlib.ticker.Formatter`
15511556 """
15521557 cbook ._check_isinstance (mticker .Formatter , formatter = formatter )
1558+ if (isinstance (formatter , mticker .FixedFormatter )
1559+ and len (formatter .seq ) > 0
1560+ and not isinstance (self .minor .locator , mticker .FixedLocator )):
1561+ cbook ._warn_external ('FixedFormatter should only be used together '
1562+ 'with FixedLocator' )
15531563 self .isDefault_minfmt = False
15541564 self .minor .formatter = formatter
15551565 formatter .set_axis (self )
@@ -1601,6 +1611,11 @@ def set_ticklabels(self, ticklabels, *args, minor=False, **kwargs):
16011611 r"""
16021612 Set the text values of the tick labels.
16031613
1614+ .. warning::
1615+ This method should only be used after fixing the tick positions
1616+ using `.Axis.set_ticks`. Otherwise, the labels may end up in
1617+ unexpected positions.
1618+
16041619 Parameters
16051620 ----------
16061621 ticklabels : sequence of str or of `Text`\s
@@ -1622,18 +1637,8 @@ def set_ticklabels(self, ticklabels, *args, minor=False, **kwargs):
16221637 "3.1" , message = "Additional positional arguments to "
16231638 "set_ticklabels are ignored, and deprecated since Matplotlib "
16241639 "3.1; passing them will raise a TypeError in Matplotlib 3.3." )
1625- get_labels = []
1626- for t in ticklabels :
1627- # try calling get_text() to check whether it is Text object
1628- # if it is Text, get label content
1629- try :
1630- get_labels .append (t .get_text ())
1631- # otherwise add the label to the list directly
1632- except AttributeError :
1633- get_labels .append (t )
1634- # replace the ticklabels list with the processed one
1635- ticklabels = get_labels
1636-
1640+ ticklabels = [t .get_text () if hasattr (t , 'get_text' ) else t
1641+ for t in ticklabels ]
16371642 if minor :
16381643 self .set_minor_formatter (mticker .FixedFormatter (ticklabels ))
16391644 ticks = self .get_minor_ticks ()
0 commit comments