6
6
import functools
7
7
import logging
8
8
from numbers import Real
9
+ import warnings
9
10
10
11
import numpy as np
11
12
@@ -2014,7 +2015,10 @@ def set_ticklabels(self, labels, *, minor=False, fontdict=None, **kwargs):
2014
2015
raise TypeError (f"{ labels := } must be a sequence" ) from None
2015
2016
locator = (self .get_minor_locator () if minor
2016
2017
else self .get_major_locator ())
2017
- if isinstance (locator , mticker .FixedLocator ):
2018
+ if not labels :
2019
+ # eg labels=[]:
2020
+ formatter = mticker .NullFormatter ()
2021
+ elif isinstance (locator , mticker .FixedLocator ):
2018
2022
# Passing [] as a list of labels is often used as a way to
2019
2023
# remove all tick labels, so only error for > 0 labels
2020
2024
if len (locator .locs ) != len (labels ) and len (labels ) != 0 :
@@ -2027,16 +2031,23 @@ def set_ticklabels(self, labels, *, minor=False, fontdict=None, **kwargs):
2027
2031
func = functools .partial (self ._format_with_dict , tickd )
2028
2032
formatter = mticker .FuncFormatter (func )
2029
2033
else :
2034
+ _api .warn_external (
2035
+ "set_ticklabels() should only be used with a fixed number of "
2036
+ "ticks, i.e. after set_ticks() or using a FixedLocator." )
2030
2037
formatter = mticker .FixedFormatter (labels )
2031
2038
2032
- if minor :
2033
- self .set_minor_formatter (formatter )
2034
- locs = self .get_minorticklocs ()
2035
- ticks = self .get_minor_ticks (len (locs ))
2036
- else :
2037
- self .set_major_formatter (formatter )
2038
- locs = self .get_majorticklocs ()
2039
- ticks = self .get_major_ticks (len (locs ))
2039
+ with warnings .catch_warnings ():
2040
+ warnings .filterwarnings (
2041
+ "ignore" ,
2042
+ message = "FixedFormatter should only be used together with FixedLocator" )
2043
+ if minor :
2044
+ self .set_minor_formatter (formatter )
2045
+ locs = self .get_minorticklocs ()
2046
+ ticks = self .get_minor_ticks (len (locs ))
2047
+ else :
2048
+ self .set_major_formatter (formatter )
2049
+ locs = self .get_majorticklocs ()
2050
+ ticks = self .get_major_ticks (len (locs ))
2040
2051
2041
2052
ret = []
2042
2053
if fontdict is not None :
0 commit comments