Skip to content

BUG: get UserWarning about FixedFormatter/FixedLocator in series.plot() #35684

Closed
@WestXu

Description

@WestXu
  • I have checked that this issue has not already been reported.

  • I have confirmed this bug exists on the latest version of pandas.

  • (optional) I have confirmed this bug exists on the master branch of pandas.

Code Sample, a copy-pastable example

pd.Series({"20190102": 10, "20190103": 10}).plot()

Problem description

Got a UserWarning:

/home/.../miniconda3/lib/python3.8/site-packages/pandas/plotting/_matplotlib/core.py:1192: UserWarning: FixedFormatter should only be used together with FixedLocator

And to catch the Warning:

import warnings
with warnings.catch_warnings():
    warnings.filterwarnings("error")
    pd.Series({"20190102": 10, "20190103": 10}).plot()

Got

---------------------------------------------------------------------------
UserWarning                               Traceback (most recent call last)
<ipython-input-5-4339a8efd56e> in <module>
      2 with warnings.catch_warnings():
      3     warnings.filterwarnings("error")
----> 4     pd.Series({"20190102": 10, "20190103": 10}).plot()

~/miniconda3/lib/python3.8/site-packages/pandas/plotting/_core.py in __call__(self, *args, **kwargs)
    845                     data.columns = label_name
    846 
--> 847         return plot_backend.plot(data, kind=kind, **kwargs)
    848 
    849     __call__.__doc__ = __doc__

~/miniconda3/lib/python3.8/site-packages/pandas/plotting/_matplotlib/__init__.py in plot(data, kind, **kwargs)
     59             kwargs["ax"] = getattr(ax, "left_ax", ax)
     60     plot_obj = PLOT_CLASSES[kind](data, **kwargs)
---> 61     plot_obj.generate()
     62     plot_obj.draw()
     63     return plot_obj.result

~/miniconda3/lib/python3.8/site-packages/pandas/plotting/_matplotlib/core.py in generate(self)
    268         for ax in self.axes:
    269             self._post_plot_logic_common(ax, self.data)
--> 270             self._post_plot_logic(ax, self.data)
    271 
    272     def _args_adjust(self):

~/miniconda3/lib/python3.8/site-packages/pandas/plotting/_matplotlib/core.py in _post_plot_logic(self, ax, data)
   1190             xticks = ax.get_xticks()
   1191             xticklabels = [get_label(x) for x in xticks]
-> 1192             ax.set_xticklabels(xticklabels)
   1193             ax.xaxis.set_major_locator(FixedLocator(xticks))
   1194 

~/miniconda3/lib/python3.8/site-packages/matplotlib/axes/_base.py in wrapper(self, *args, **kwargs)
     61 
     62         def wrapper(self, *args, **kwargs):
---> 63             return get_method(self)(*args, **kwargs)
     64 
     65         wrapper.__module__ = owner.__module__

~/miniconda3/lib/python3.8/site-packages/matplotlib/cbook/deprecation.py in wrapper(*args, **kwargs)
    449                 "parameter will become keyword-only %(removal)s.",
    450                 name=name, obj_type=f"parameter of {func.__name__}()")
--> 451         return func(*args, **kwargs)
    452 
    453     return wrapper

~/miniconda3/lib/python3.8/site-packages/matplotlib/axis.py in _set_ticklabels(self, labels, fontdict, minor, **kwargs)
   1791         if fontdict is not None:
   1792             kwargs.update(fontdict)
-> 1793         return self.set_ticklabels(labels, minor=minor, **kwargs)
   1794 
   1795     @cbook._make_keyword_only("3.2", "minor")

~/miniconda3/lib/python3.8/site-packages/matplotlib/axis.py in set_ticklabels(self, ticklabels, minor, **kwargs)
   1728             ticks = self.get_minor_ticks(len(locs))
   1729         else:
-> 1730             self.set_major_formatter(formatter)
   1731             locs = self.get_majorticklocs()
   1732             ticks = self.get_major_ticks(len(locs))

~/miniconda3/lib/python3.8/site-packages/matplotlib/axis.py in set_major_formatter(self, formatter)
   1589         formatter : `~matplotlib.ticker.Formatter`, ``str``, or function
   1590         """
-> 1591         self._set_formatter(formatter, self.major)
   1592 
   1593     def set_minor_formatter(self, formatter):

~/miniconda3/lib/python3.8/site-packages/matplotlib/axis.py in _set_formatter(self, formatter, level)
   1619                 and len(formatter.seq) > 0
   1620                 and not isinstance(level.locator, mticker.FixedLocator)):
-> 1621             cbook._warn_external('FixedFormatter should only be used together '
   1622                                  'with FixedLocator')
   1623 

~/miniconda3/lib/python3.8/site-packages/matplotlib/cbook/__init__.py in _warn_external(message, category)
   2088             break
   2089         frame = frame.f_back
-> 2090     warnings.warn(message, category, stacklevel)
   2091 
   2092 

UserWarning: FixedFormatter should only be used together with FixedLocator

Output of pd.show_versions()

INSTALLED VERSIONS

commit : None
python : 3.8.5.final.0
python-bits : 64
OS : Linux
OS-release : 4.19.104-microsoft-standard
machine : x86_64
processor : x86_64
byteorder : little
LC_ALL : None
LANG : C.UTF-8
LOCALE : en_US.UTF-8

pandas : 1.0.5
numpy : 1.19.1
pytz : 2020.1
dateutil : 2.8.1
pip : 20.2.1
setuptools : 49.3.1.post20200810
Cython : None
pytest : 6.0.1
hypothesis : None
sphinx : 3.2.0
blosc : None
feather : None
xlsxwriter : None
lxml.etree : 4.5.2
html5lib : None
pymysql : 0.10.0
psycopg2 : None
jinja2 : 2.11.2
IPython : 7.17.0
pandas_datareader: None
bs4 : 4.9.1
bottleneck : None
fastparquet : None
gcsfs : None
lxml.etree : 4.5.2
matplotlib : 3.3.0
numexpr : 2.7.1
odfpy : None
openpyxl : 3.0.4
pandas_gbq : None
pyarrow : 1.0.0
pytables : None
pytest : 6.0.1
pyxlsb : None
s3fs : None
scipy : 1.5.2
sqlalchemy : 1.3.18
tables : 3.6.1
tabulate : 0.8.7
xarray : None
xlrd : 1.2.0
xlwt : None
xlsxwriter : None
numba : None

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugCompatpandas objects compatability with Numpy or Python functionsVisualizationplotting

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions