Issue 1:
Bug report

Bug summary

For people who use numpy.datetime64() arrays with pcolormesh, a DeprecationWarning has been appearing prompting users to specify a shading kwarg 'nearest', 'auto' or 'gouraud' since shading='flat' is being deprecated. However, passing 'nearest' results in a UFuncTypeError when using 'nearest' due to a casting issue in _axes.py from _interp_grid()

Code for reproduction

import numpy as np
import matplotlib.pyplot as plt

times = np.arange(np.datetime64('2020-12-01'), np.datetime64('2020-12-31'))
yaxis = np.arange(0, 20)
caxis = np.random.normal(0.0, 1.0, (times.shape[0], yaxis.shape[0]))

plt.pcolormesh(times, yaxis, caxis.T, shading='nearest')
plt.show()

Actual outcome

Traceback (most recent call last):

File "..\test.py", line 15, in <module>
plt.pcolormesh(times, yaxis, caxis.T, shading='nearest')

File "C:\Users\iarey\anaconda3\lib\site-packages\matplotlib\pyplot.py", line 2801, in pcolormesh
__ret = gca().pcolormesh(

File "C:\Users\iarey\anaconda3\lib\site-packages\matplotlib\__init__.py", line 1438, in inner
return func(ax, *map(sanitize_sequence, args), **kwargs)

File "C:\Users\iarey\anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 6093, in pcolormesh
X, Y, C, shading = self._pcolorargs('pcolormesh', *args,

File "C:\Users\iarey\anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 5651, in _pcolorargs
X = _interp_grid(X)

File "C:\Users\iarey\anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 5633, in _interp_grid
if not (np.all(dX >= 0) or np.all(dX <= 0)):

UFuncTypeError: Cannot cast ufunc 'greater_equal' input 0 from dtype('<m8[D]') to dtype('<m8') with casting rule 'same_kind'

Expected outcome

A pcolormesh timeseries plot with random data and a np.datetime64() x-axis.

Matplotlib version

Operating system: Windows 10

Matplotlib version: 3.3.2 via standard conda

Matplotlib backend: Qt5Agg

Python version: 3.8.5

Jupyter version (if applicable):

Other libraries: numpy-1.19.2

Issue 2:
Bug report

Bug summary

When using a datetime x-axis in a pcolormesh, and nearest shading,

TypeError: '>=' not supported between instances of 'datetime.timedelta' and 'int'

is raised.

From what I can tell, #18398 assumed comparison with 0 would always be possible, but this isn't the case for datetime.timedelta.

Code for reproduction

from datetime import datetime

from matplotlib import pyplot as plt

x_coords = [datetime.fromtimestamp(x * 3600) for x in range(24)]
y_coords = [*range(0, 10)]
plt.pcolormesh(x_coords,
y_coords, [[*range(24)] for _ in range(10)],
shading="nearest")

Actual outcome

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".local/lib/python3.8/site-packages/matplotlib/pyplot.py", line 2801, in pcolormesh
__ret = gca().pcolormesh(
File ".local/lib/python3.8/site-packages/matplotlib/__init__.py", line 1438, in inner
return func(ax, *map(sanitize_sequence, args), **kwargs)
File ".local/lib/python3.8/site-packages/matplotlib/axes/_axes.py", line 6093, in pcolormesh
X, Y, C, shading = self._pcolorargs('pcolormesh', *args,
File ".local/lib/python3.8/site-packages/matplotlib/axes/_axes.py", line 5651, in _pcolorargs
X = _interp_grid(X)
File ".local/lib/python3.8/site-packages/matplotlib/axes/_axes.py", line 5633, in _interp_grid
if not (np.all(dX >= 0) or np.all(dX <= 0)):
TypeError: '>=' not supported between instances of 'datetime.timedelta' and 'int'

Expected outcome

None

Matplotlib version

Matplotlib version: 3.3.2

Python version: 3.8

works with pip3 install matplotlib==3.3.1, fails with pip3 install matplotlib==3.3.2