@@ -1536,6 +1536,11 @@ def set_major_formatter(self, formatter):
1536
1536
formatter : `~matplotlib.ticker.Formatter`
1537
1537
"""
1538
1538
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' )
1539
1544
self .isDefault_majfmt = False
1540
1545
self .major .formatter = formatter
1541
1546
formatter .set_axis (self )
@@ -1550,6 +1555,11 @@ def set_minor_formatter(self, formatter):
1550
1555
formatter : `~matplotlib.ticker.Formatter`
1551
1556
"""
1552
1557
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' )
1553
1563
self .isDefault_minfmt = False
1554
1564
self .minor .formatter = formatter
1555
1565
formatter .set_axis (self )
@@ -1601,6 +1611,11 @@ def set_ticklabels(self, ticklabels, *args, minor=False, **kwargs):
1601
1611
r"""
1602
1612
Set the text values of the tick labels.
1603
1613
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
+
1604
1619
Parameters
1605
1620
----------
1606
1621
ticklabels : sequence of str or of `Text`\s
@@ -1622,18 +1637,8 @@ def set_ticklabels(self, ticklabels, *args, minor=False, **kwargs):
1622
1637
"3.1" , message = "Additional positional arguments to "
1623
1638
"set_ticklabels are ignored, and deprecated since Matplotlib "
1624
1639
"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 ]
1637
1642
if minor :
1638
1643
self .set_minor_formatter (mticker .FixedFormatter (ticklabels ))
1639
1644
ticks = self .get_minor_ticks ()
0 commit comments