Repository navigation
Description
Summary
In #24545 it was identified that sometimes there is a problem with masked arrays and units. The solution in #24732 is rather straightforward, but it lead me to check the code for potential other locations.
Proposed fix
These are the locations I potentially found. It should probably be confirmed that it is a problem before modifying them (and those cases will be a good base for a test):
matplotlib/lib/matplotlib/collections.py
Lines 548 to 550 in cc85fb6
| self._offsets = np.column_stack( | |
| (np.asarray(self.convert_xunits(offsets[:, 0]), float), | |
| np.asarray(self.convert_yunits(offsets[:, 1]), float))) |
(Here one should probably take a complete look at the
set_offsets/get_offsets setup and see if one can remove redundant calls. See a bit of the discussions in #24732)
matplotlib/lib/matplotlib/collections.py
Line 2099 in cc85fb6
| offsets = np.column_stack([xs, ys]) |
(Not sure if it makes sense here.)
A bunch in quiver, but not sure how well that supports units and masks. Similar with projections.
As discussed in #24732 (comment) it seems like date2num does not support masked arrays, so making it do that is also a step in the right direction for this. (This is dealt with in #24734)
Activity
chahak13 commentedon Dec 17, 2022
@oscargus I took a shot at fixing the support for masked arrays in
set_offsetsin collections (#24757). Regarding theget_offsets/set_offsetssetup, on a quick glance, theget_datalimfunction is one place that usesself._offsetsbeingNoneto perform some logic so that will also have changes based on if we decide to change anything aboutself._offsets.github-actions commentedon Feb 9, 2026
This issue has been marked "inactive" because it has been 365 days since the last comment. If this issue is still present in recent Matplotlib releases, or the feature request is still wanted, please leave a comment and this label will be removed. If there are no updates in another 30 days, this issue will be automatically closed, but you are free to re-open or create a new issue if needed. We value issue reports, and this procedure is meant to help us resurface and prioritize issues that have not been addressed yet, not make them disappear. Thanks for your help!