Bug report
Bug summary
Cannot plot a fully masked array agaisnt an array of datetimes. A ValueError is raised for a seemingly unrelated reason. Surprisingly, matplotlib has no problem plotting a fully masked array by itself.
Code for reproduction
import matplotlib.pyplot as plt
from datetime import datetime
import numpy as np
x = np.array([
datetime(2017, 1, 1),
datetime(2017, 1, 2),
datetime(2017, 1, 3),
datetime(2017, 1, 4),
datetime(2017, 1, 5)
])
y = np.array([1,2,3,4,5])
m = np.ma.masked_greater(y, 0)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, m)
plt.show()
Actual outcome
[super big traceback, only showing the most recent to save space...]
/usr/lib64/python3.5/dist-packages/matplotlib/dates.py in _from_ordinalf(x, tz)
258
259 ix = int(x)
--> 260 dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC)
261
262 remainder = float(x) - ix
ValueError: ordinal must be >= 1
Expected outcome
An empty graph. If you comment out x and don't plot against it, then matplotlib has no problem displaying an empty graph. It is only when you plot against a datetime array this is an issue.
Matplotlib version
- Operating system: GNU/Linux
- Matplotlib version: 2.1.1
- Matplotlib backend (
print(matplotlib.get_backend())): module://ipykernel.pylab.backend_inline
- Python version: 3.5.5
- Jupyter version (if applicable): 4.3.0
- Other libraries: numpy, datetime
Bug report
Bug summary
Cannot plot a fully masked array agaisnt an array of datetimes. A ValueError is raised for a seemingly unrelated reason. Surprisingly, matplotlib has no problem plotting a fully masked array by itself.
Code for reproduction
Actual outcome
Expected outcome
An empty graph. If you comment out
xand don't plot against it, then matplotlib has no problem displaying an empty graph. It is only when you plot against a datetime array this is an issue.Matplotlib version
print(matplotlib.get_backend())): module://ipykernel.pylab.backend_inline