FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Adding an equals method to colormaps by greglucas · Pull Request #20227 · matplotlib/matplotlib · GitHub

Repository navigation

Adding an equals method to colormaps - #20227

Merged
tacaswell merged 1 commit into
matplotlib:masterfrom
greglucas:cm-equals
May 14, 2021
Merged

tacaswell merged 1 commit into
matplotlib:masterfrom
greglucas:cm-equals

Conversation

Copy link
Copy Markdown
Contributor

PR Summary

This adds an __eq__ method to Colormap to test the lookup
tables for equality. This will help for testing whether colormaps are the same even if they aren't the same object.

plt.get_cmap("Blues") == plt.get_cmap("Blues") even if they aren't the same object anymore.
Taking just this portion out of the closed #16943.

PR Checklist

  • Has pytest style unit tests (and pytest passes).
  • Is Flake 8 compliant (run flake8 on changed files to check).
  • [N/A] New features are documented, with examples if plot related.
  • [N/A] Documentation is sphinx and numpydoc compliant (the docs should build without error).
  • [N/A] Conforms to Matplotlib style conventions (install flake8-docstrings and run flake8 --docstring-convention=all).
  • [N/A] New features have an entry in doc/users/next_whats_new/ (follow instructions in README.rst there).
  • [N/A] API changes documented in doc/api/next_api_changes/ (follow instructions in README.rst there).

tacaswell added this to the v3.5.0 milestone May 14, 2021
Comment thread lib/matplotlib/colors.py
self._init()
if not other._isinit:
other._init()
return np.array_equal(self._lut, other._lut)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

colormaps know their own name, is that something we want to also check?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Yes, IMHO we should. As we use it now, the name is an integral part of the colormap. Otherwise you can get funny behavior, e.g. with the new colormap registry

cmap in colormaps.values()  # True
cmap.name in colormaps.keys()  # False

And similar.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I don't have a strong opinion either way. I was viewing the == to mean "will these colormaps look the same". If cmocean defines a "Blues1" colormap and it looks suspiciously similar to MPL's "Blues", I may want to check for that equality and not name equality. I do see TIm's point though, so I am fine adding it if that is what is wanted.

I suppose we should also add colorbar_extends too in case someone changed that.

timhoffm May 14, 2021 •
edited
Loading

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I see the point in "will these colormaps look the same", but as long as we have Colormap.name I think it has to be taken into account for __eq__. You could introduce a Colormap.is_equivalent() for "look the same". OTOH I don't think there is a strong reason a colormap has to know its name, but removing that is hard to justify as well.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

OK, I added in the comparisons for name and colorbar_extend. Also added tests for those two situations.

jklymak marked this pull request as draft May 14, 2021 18:39
This adds an __eq__ method to Colormap to test the lookup
tables for equality.
greglucas marked this pull request as ready for review May 14, 2021 20:47

jklymak left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Not sure when I would use this, but it looks right to me ;-)

Copy link
Copy Markdown
Member

I do not think this is a big enough feature to warrant a whats new.

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants


Back | FazBrowse Home | New Git URL