Some of the reasons I read about were due to the difficulty and time implied in implementing this feature in some way that remains stable. The proposal is old (at least since 2012) as you can see here.
Several workarounds have been proposed and you'll find examples in SO like this and this.
As for matplotlib lib itself you'll find even some solutions that seemed to be workable as an initial prototype. This one was posted by agijsberts in this discussion here. Although the issue was in a pandas tracker the solution actually seems to require no pandas at all.
from matplotlib import units, dates
from matplotlib import pyplot as plt
from numpy import datetime64, timedelta64, arange, ndarray, dtype
from numpy.random import rand
import datetime
resolution_scale = {
dtype('datetime64[ns]'): 1e-9,
dtype('datetime64[us]'): 1e-6,
dtype('datetime64[ms]'): 1e-3,
dtype('datetime64[s]'): 1,
dtype('datetime64[m]'): 60,
dtype('datetime64[h]'): 60 * 60,
dtype('datetime64[D]'): 24 * 60 * 60,
}
class Datetime64Converter(dates.DateConverter):
@staticmethod
def convert(values, unit, axis):
if isinstance(values, ndarray) and issubclass(values.dtype.type, datetime64):
return dates.epoch2num(values.view('i8') * resolution_scale[values.dtype])
elif isinstance(values, datetime.date):
return dates.date2num(values)
else:
return values
units.registry[datetime64] = Datetime64Converter
a = arange('2014-01-01', '2014-01-07', timedelta64(1, 'D'), dtype='datetime64[D]')
b = rand(len(a))
for i, r in enumerate(('ns', 'us', 'ms', 's', 'm', 'h', 'D')):
plt.plot(a.astype('datetime64[{0}]'.format(r)), b + i, label=r)
plt.legend()
plt.show()
Yet, even with this, I still haven't heard of an actual compromise to do this (although notice that I'm not keeping myself informed either). Personally I would say that the reason for this not being implemented is just because it's not on anyone priority list.