Skip to content

Make ListedColormap.monochrome a property #29125

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 13, 2024

Conversation

timhoffm
Copy link
Member

The calculated property replaces the attribute monochome, which was manually set on __init__, but was not correctly set for all possible inputs.

This property ensures consistency and simplifies initialization at the cost of some computation overhead to determine whether the colormap is monochrome.

The computation cost is bearable (even without caching), because it's only used in ContourSet._process_colors.

It's a separate discussion whether we need this property on colormaps at all (at least as public API). Usually, colormaps are not monochrome and monochrome colormaps are a very special edge case used in contours only. We may eventually deprecate it, but since it is currently public API, let's leave it for now.

There's also a technical API incompatibility in that users cannot set the attribute anymore, but I'd argue that that has never been intended and there's no practical use-case, so I refrain from the extra hassle of allowing setting this property.

@timhoffm timhoffm added this to the v3.11.0 milestone Nov 12, 2024
@timhoffm timhoffm force-pushed the colormap-monochrome branch 2 times, most recently from 5827742 to 6b1ce2a Compare November 12, 2024 11:27
@timhoffm
Copy link
Member Author

timhoffm commented Nov 12, 2024

I get test_interactive_backend[toolmanager-MPLBACKEND=wxagg-BACKEND_DEPS=wx] failing over several tests, but don't have any clue how that could be related.

Note: Discussion moved to #29129.

Copy link
Contributor

@greglucas greglucas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 This is easier to follow.

Copy link
Member

@jklymak jklymak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to self merge plus or minus @greglucas comment

The calculated property replaces the attribute *monochome*, which was
manually set on `__init__`, but was not correctly set for all possible
inputs.

This property ensures consistency and simplifies initialization at the
cost of some computation overhead to determine whether the colormap is
monochrome.

The computation cost is bearable (even without caching), because it's
only used in `ContourSet._process_colors`.

It's a separate discussion whether we need this property on colormaps at
all (at least as public API). Usually, colormaps are not monochrome
and monochrome colormaps are a very special edge case used in contours
only. We may eventually deprecate it, but since it is currently public
API, let's leave it for now.

There's also a technical API incompatibility in that users cannot set
the attribute anymore, but I'd argue that that has never been intended
and there's no practical use-case, so I refrain from the extra hassle
of allowing setting this property.

Co-authored-by: Greg Lucas <greg.m.lucas@gmail.com>
@timhoffm timhoffm force-pushed the colormap-monochrome branch from 5e48fd8 to ce488f5 Compare November 12, 2024 22:29
@timhoffm timhoffm merged commit 464c8e8 into matplotlib:main Nov 13, 2024
36 of 43 checks passed
@timhoffm timhoffm deleted the colormap-monochrome branch November 13, 2024 00:25
@timhoffm timhoffm restored the colormap-monochrome branch November 13, 2024 00:25
@timhoffm timhoffm deleted the colormap-monochrome branch November 13, 2024 00:25
@timhoffm timhoffm mentioned this pull request Nov 14, 2024
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants