4
4
5
5
import datetime
6
6
import logging
7
+ import warnings
7
8
8
9
import numpy as np
9
10
@@ -1632,6 +1633,11 @@ def set_major_formatter(self, formatter):
1632
1633
formatter : `~matplotlib.ticker.Formatter`
1633
1634
"""
1634
1635
cbook ._check_isinstance (mticker .Formatter , formatter = formatter )
1636
+ if (isinstance (formatter , mticker .FixedFormatter )
1637
+ and len (formatter .seq ) > 0
1638
+ and not isinstance (self .major .locator , mticker .FixedLocator )):
1639
+ warnings .warn ('FixedFormatter should only be used together with '
1640
+ 'FixedLocator' , stacklevel = 2 )
1635
1641
self .isDefault_majfmt = False
1636
1642
self .major .formatter = formatter
1637
1643
formatter .set_axis (self )
@@ -1646,6 +1652,11 @@ def set_minor_formatter(self, formatter):
1646
1652
formatter : `~matplotlib.ticker.Formatter`
1647
1653
"""
1648
1654
cbook ._check_isinstance (mticker .Formatter , formatter = formatter )
1655
+ if (isinstance (formatter , mticker .FixedFormatter )
1656
+ and len (formatter .seq ) > 0
1657
+ and not isinstance (self .minor .locator , mticker .FixedLocator )):
1658
+ warnings .warn ('FixedFormatter should only be used together with '
1659
+ 'FixedLocator' , stacklevel = 2 )
1649
1660
self .isDefault_minfmt = False
1650
1661
self .minor .formatter = formatter
1651
1662
formatter .set_axis (self )
@@ -1697,6 +1708,11 @@ def set_ticklabels(self, ticklabels, *args, minor=False, **kwargs):
1697
1708
r"""
1698
1709
Set the text values of the tick labels.
1699
1710
1711
+ .. warning::
1712
+ This method should only be used after fixing the tick positions
1713
+ using `.Axis.set_ticks`. Otherwise, the labels may end up in
1714
+ unexpected positions.
1715
+
1700
1716
Parameters
1701
1717
----------
1702
1718
ticklabels : sequence of str or of `Text`\s
@@ -1718,18 +1734,8 @@ def set_ticklabels(self, ticklabels, *args, minor=False, **kwargs):
1718
1734
"3.1" , message = "Additional positional arguments to "
1719
1735
"set_ticklabels are ignored, and deprecated since Matplotlib "
1720
1736
"3.1; passing them will raise a TypeError in Matplotlib 3.3." )
1721
- get_labels = []
1722
- for t in ticklabels :
1723
- # try calling get_text() to check whether it is Text object
1724
- # if it is Text, get label content
1725
- try :
1726
- get_labels .append (t .get_text ())
1727
- # otherwise add the label to the list directly
1728
- except AttributeError :
1729
- get_labels .append (t )
1730
- # replace the ticklabels list with the processed one
1731
- ticklabels = get_labels
1732
-
1737
+ ticklabels = [t .get_text () if hasattr (t , 'get_text' ) else t
1738
+ for t in ticklabels ]
1733
1739
if minor :
1734
1740
self .set_minor_formatter (mticker .FixedFormatter (ticklabels ))
1735
1741
ticks = self .get_minor_ticks ()
0 commit comments