Closed
Description
Bug report
Bug summary
Plotting datetime
values first, and then trying to plot numerical data raises the confusing error message below, and then a blank window appears.
Code for reproduction
import matplotlib.pyplot as plt
from datetime import datetime
fig, ax = plt.subplots()
ax.plot(datetime(2017, 1, 1), 1)
ax.plot(1, 1)
plt.show()
Actual outcome
Traceback (most recent call last):
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/backends/backend_macosx.py", line 136, in _draw
self.figure.draw(renderer)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/artist.py", line 63, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/figure.py", line 1144, in draw
renderer, self, dsu, self.suppressComposite)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/image.py", line 139, in _draw_list_compositing_images
a.draw(renderer)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/artist.py", line 63, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/axes/_base.py", line 2426, in draw
mimage._draw_list_compositing_images(renderer, self, dsu)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/image.py", line 139, in _draw_list_compositing_images
a.draw(renderer)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/artist.py", line 63, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/axis.py", line 1136, in draw
ticks_to_draw = self._update_ticks(renderer)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/axis.py", line 969, in _update_ticks
tick_tups = [t for t in self.iter_ticks()]
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/axis.py", line 969, in <listcomp>
tick_tups = [t for t in self.iter_ticks()]
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/axis.py", line 912, in iter_ticks
majorLocs = self.major.locator()
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/dates.py", line 986, in __call__
self.refresh()
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/dates.py", line 1006, in refresh
dmin, dmax = self.viewlim_to_dt()
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/dates.py", line 763, in viewlim_to_dt
return num2date(vmin, self.tz), num2date(vmax, self.tz)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/dates.py", line 401, in num2date
return _from_ordinalf(x, tz)
File "/Users/dstansby/miniconda3/lib/python3.6/site-packages/matplotlib/dates.py", line 254, in _from_ordinalf
dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC)
ValueError: ordinal must be >= 1
Expected outcome
A sensible error message is raised, telling the user that numerical data can't be plotted on a datetime axis
Matplotlib version
- Operating System: OSX
- Matplotlib Version: master branch
- Python Version: 3.6.2