Ignore np.nan values in Normalize.autoscale() #28406
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR summary
When using colormaps to map scalars to colors, it is necessary to normalize the values into the range [0,1] beforehand. The
Normalize
class offers this functionality and includes the methodautoscale
to determine a sensible valuevmin
andvmax
for scaling automatically. However, in its current state,autoscale
will setvmin
andvmax
tonan
when presented with the inputnp.array([1, 2, np.nan])
. Because of this, calling an Normalize instance on this will transform the entire array tonan
.Example pre-PR:
Example post-PR:
This PR closes #28405.
Additonal comment: the values
np.inf
and-np.inf
currently also break theautoscale
function. It is not obvious how the autoscaler should behave when presented with such values. I'd be open to modify this PR in such a way that they also get ignored.PR checklist