Skip to content

Use bbox.{size,bounds,width,height,p0,...} where appropriate. #21400

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
Oct 21, 2021

Conversation

anntzer
Copy link
Contributor

@anntzer anntzer commented Oct 20, 2021

Mostly for clarity, but also, these are all properties, so it should
even be (likely unnoticeably) faster to have fewer access attributes.

The change to Figure.get_tightbbox is slightly different: checking for
bbox.width/bbox.height is unnecessary because we already do the same
check a few lines later.

PR Summary

PR Checklist

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

Mostly for clarity, but also, these are all properties, so it should
even be (likely unnoticeably) faster to have fewer access attributes.

The change to Figure.get_tightbbox is slightly different: checking for
bbox.width/bbox.height is unnecessary because we already do the same
check a few lines later.
@@ -44,7 +44,7 @@


def add_fancy_patch_around(ax, bb, **kwargs):
fancy = FancyBboxPatch((bb.xmin, bb.ymin), bb.width, bb.height,
Copy link
Member

Choose a reason for hiding this comment

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

p0 is not guaranteed to be the minimum like xmin/ymin, but maybe that's okay? Otherwise, this should be bb.min.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, but .width and .height can also be negative and a least if this was a rectangle, it would be correct to always use p0 (whether it's min or not) and signed width and height. I don't actually know whether the FancyBboxPatch mutators correctly handle that case, though...

Copy link
Member

Choose a reason for hiding this comment

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

Yea, I figured as much from the Rectangle change later in this PR. I also don't know if FancyBboxPatch handles it, but the original was wrong.

And I just realized this is an example, so in this context, we don't have to worry about the point order being mixed up.

Copy link
Contributor Author

@anntzer anntzer Oct 21, 2021

Choose a reason for hiding this comment

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

After checking, FancyBboxPatch does get confused by negative width/height (the mutated path doesn't make much sense, but is probably just whatever you get from the naive, positive size formula, at least for the default bboxstyle). I'm not sure whether it's worth adding a check for that in the constructor...

@@ -44,7 +44,7 @@


def add_fancy_patch_around(ax, bb, **kwargs):
fancy = FancyBboxPatch((bb.xmin, bb.ymin), bb.width, bb.height,
Copy link
Member

Choose a reason for hiding this comment

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

Yea, I figured as much from the Rectangle change later in this PR. I also don't know if FancyBboxPatch handles it, but the original was wrong.

And I just realized this is an example, so in this context, we don't have to worry about the point order being mixed up.

@timhoffm timhoffm merged commit fea21af into matplotlib:main Oct 21, 2021
@anntzer anntzer deleted the bboxprops branch October 21, 2021 07:11
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