Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7ccdefd

Browse files
authored
Merge pull request #10642 from matplotlib/auto-backport-of-pr-10631
Backport PR #10631 on branch v2.2.x
2 parents 39e9773 + a689f09 commit 7ccdefd

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

lib/matplotlib/dates.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,13 @@ def _dt64_to_ordinalf(d):
290290
dt += extra.astype(np.float64) / 1.0e9
291291
dt = dt / SEC_PER_DAY + 1.0
292292

293+
NaT_int = np.datetime64('NaT').astype(np.int64)
294+
d_int = d.astype(np.int64)
295+
try:
296+
dt[d_int == NaT_int] = np.nan
297+
except TypeError:
298+
if d_int == NaT_int:
299+
dt = np.nan
293300
return dt
294301

295302

lib/matplotlib/tests/test_dates.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,33 @@ def test_date_numpyx():
5151
datetime.datetime(2017, 1, 1, 3, 1, 1)]]])
5252
@pytest.mark.parametrize('dtype', ['datetime64[s]',
5353
'datetime64[us]',
54-
'datetime64[ms]'])
54+
'datetime64[ms]',
55+
'datetime64[ns]'])
5556
def test_date_date2num_numpy(t0, dtype):
5657
time = mdates.date2num(t0)
5758
tnp = np.array(t0, dtype=dtype)
5859
nptime = mdates.date2num(tnp)
5960
assert np.array_equal(time, nptime)
6061

6162

63+
@pytest.mark.parametrize('dtype', ['datetime64[s]',
64+
'datetime64[us]',
65+
'datetime64[ms]',
66+
'datetime64[ns]'])
67+
def test_date2num_NaT(dtype):
68+
t0 = datetime.datetime(2017, 1, 1, 0, 1, 1)
69+
tmpl = [mdates.date2num(t0), np.nan]
70+
tnp = np.array([t0, 'NaT'], dtype=dtype)
71+
nptime = mdates.date2num(tnp)
72+
np.testing.assert_array_equal(tmpl, nptime)
73+
74+
75+
@pytest.mark.parametrize('units', ['s', 'ms', 'us', 'ns'])
76+
def test_date2num_NaT_scalar(units):
77+
tmpl = mdates.date2num(np.datetime64('NaT', units))
78+
assert np.isnan(tmpl)
79+
80+
6281
@image_comparison(baseline_images=['date_empty'], extensions=['png'])
6382
def test_date_empty():
6483
# make sure mpl does the right thing when told to plot dates even

0 commit comments

Comments
 (0)