@@ -1529,37 +1529,68 @@ def set_major_formatter(self, formatter):
15291529 """
15301530 Set the formatter of the major ticker.
15311531
1532+ In addition to a `~matplotlib.ticker.Formatter` instance,
1533+ this also accepts a `str` or function.
1534+ For a `str` a `~matplotlib.ticker.StrMethodFormatter` is used.
1535+ For a function a `~matplotlib.ticker.FuncFormatter` is used.
1536+
15321537 Parameters
15331538 ----------
1534- formatter : `~matplotlib.ticker.Formatter`
1539+ formatter : `~matplotlib.ticker.Formatter`, str, or function
15351540 """
1536- cbook ._check_isinstance (mticker .Formatter , formatter = formatter )
1537- if (isinstance (formatter , mticker .FixedFormatter )
1538- and len (formatter .seq ) > 0
1539- and not isinstance (self .major .locator , mticker .FixedLocator )):
1540- cbook ._warn_external ('FixedFormatter should only be used together '
1541- 'with FixedLocator' )
1542- self .isDefault_majfmt = False
1543- self .major .formatter = formatter
1544- formatter .set_axis (self )
1545- self .stale = True
1541+ self ._set_formatter (formatter , self .major )
15461542
15471543 def set_minor_formatter (self , formatter ):
15481544 """
15491545 Set the formatter of the minor ticker.
15501546
1547+ In addition to a `~matplotlib.ticker.Formatter` instance,
1548+ this also accepts a `str` or function.
1549+ For a `str` a `~matplotlib.ticker.StrMethodFormatter` is used.
1550+ For a function a `~matplotlib.ticker.FuncFormatter` is used.
1551+
15511552 Parameters
15521553 ----------
1553- formatter : `~matplotlib.ticker.Formatter`
1554+ formatter : `~matplotlib.ticker.Formatter`, str, or function
1555+ """
1556+ self ._set_formatter (formatter , self .minor )
1557+
1558+ def _set_formatter (self , formatter , level ):
15541559 """
1555- cbook ._check_isinstance (mticker .Formatter , formatter = formatter )
1560+ Set the formatter of the major or minor ticker.
1561+
1562+ In addition to a `~matplotlib.ticker.Formatter` instance,
1563+ this also accepts a `str` or function.
1564+ For a `str` a `~matplotlib.ticker.StrMethodFormatter` is used.
1565+ For a function a `~matplotlib.ticker.FuncFormatter` is used.
1566+
1567+ Parameters
1568+ ----------
1569+ formatter : `~matplotlib.ticker.Formatter`, str, or function
1570+ level : `self.major` or `self.minor`
1571+ """
1572+ if isinstance (formatter , str ):
1573+ formatter = mticker .StrMethodFormatter (formatter )
1574+ # Don't allow any other TickHelper to avoid easy-to-make errors,
1575+ # like using a Locator instead of a Formatter.
1576+ elif (callable (formatter ) and
1577+ not isinstance (formatter , mticker .TickHelper )):
1578+ formatter = mticker .FuncFormatter (formatter )
1579+ else :
1580+ cbook ._check_isinstance (mticker .Formatter , formatter = formatter )
1581+
15561582 if (isinstance (formatter , mticker .FixedFormatter )
15571583 and len (formatter .seq ) > 0
1558- and not isinstance (self . minor .locator , mticker .FixedLocator )):
1584+ and not isinstance (level .locator , mticker .FixedLocator )):
15591585 cbook ._warn_external ('FixedFormatter should only be used together '
15601586 'with FixedLocator' )
1561- self .isDefault_minfmt = False
1562- self .minor .formatter = formatter
1587+
1588+ if level == self .major :
1589+ self .isDefault_majfmt = False
1590+ else :
1591+ self .isDefault_minfmt = False
1592+
1593+ level .formatter = formatter
15631594 formatter .set_axis (self )
15641595 self .stale = True
15651596
0 commit comments