Bug summary
Plotting a numpy masked array against a list of datetime objects, plt.plot functions as expected, but plt.scatter still displays the masked data. Auto-axis limits do respect the masked data though.
Code for reproduction
import matplotlib.pyplot as plt
import numpy.ma as ma
from datetime import datetime
# Create a list of datetime objects
time_unmasked = [datetime(2022, 11, 24, 4, 49, 52),
datetime(2022, 11, 24, 4, 49, 53),
datetime(2022, 11, 24, 4, 49, 54),
datetime(2022, 11, 24, 4, 49, 55),
datetime(2022, 11, 24, 4, 49, 56),
datetime(2022, 11, 24, 4, 49, 57),
datetime(2022, 11, 24, 4, 49, 58)]
# Create a masked array with three masked variables, one datapoint far from others
data_masked = ma.array([15,14,50,15,15,15,16], mask=[0,0,1,1,1,0,0])
# Line plot (expected behaviour)
plt.plot(time_unmasked, data_masked)
plt.show()
# Scatter plot (plots masked points, but ignores masked values when auto-setting axis limits)
plt.scatter(time_unmasked, data_masked)
plt.show()
Actual outcome
plot behaves as expected.

scatter unexpectedly draws the masked datapoints, but axes limits are still respecting the masked array as the masked y=50 value is not visible.

Expected outcome
Scatter should not plot the masked data even though all timestamps are unmasked.

Additional information
It seems as though there is a check within matplotlib.pyplot.scatter that is not catching. I'd expect that logic to check that if either x or y were masked, to not plot that point. The datetime object is able to slip through. I've also tried putting time_unmasked within a numpy masked array with the same mask as masked_data (so both x and y have the same mask), but the same unexpected behaviour occurs.
Operating system
MacOS 11.3.1 (20E241)
Matplotlib Version
3.5.3
Matplotlib Backend
module://ipykernel.pylab.backend_inline
Python version
3.8.11
Jupyter version
5.7.10
Installation
conda
Bug summary
Plotting a numpy masked array against a list of datetime objects,
plt.plotfunctions as expected, butplt.scatterstill displays the masked data. Auto-axis limits do respect the masked data though.Code for reproduction
Actual outcome
plotbehaves as expected.scatterunexpectedly draws the masked datapoints, but axes limits are still respecting the masked array as the maskedy=50value is not visible.Expected outcome
Scatter should not plot the masked data even though all timestamps are unmasked.

Additional information
It seems as though there is a check within
matplotlib.pyplot.scatterthat is not catching. I'd expect that logic to check that if eitherxorywere masked, to not plot that point. The datetime object is able to slip through. I've also tried puttingtime_unmaskedwithin a numpy masked array with the same mask asmasked_data(so bothxandyhave the same mask), but the same unexpected behaviour occurs.Operating system
MacOS 11.3.1 (20E241)
Matplotlib Version
3.5.3
Matplotlib Backend
module://ipykernel.pylab.backend_inline
Python version
3.8.11
Jupyter version
5.7.10
Installation
conda