Allow passing a transformation to secondary_xaxis/_yaxis#25224
Conversation
There was a problem hiding this comment.
Thank you for opening your first PR into Matplotlib!
If you have not heard from us in a while, please feel free to ping @matplotlib/developers or anyone who has commented on the PR. Most of our reviewers are volunteers and sometimes things fall through the cracks.
You can also join us on gitter for real-time discussion.
For details on testing, writing docs, and our review process, please see the developer guide
We strive to be a welcoming and open project. Please follow our Code of Conduct.
|
This looks really useful, and a quick glance the code is great. Can we add an example, at least in the issue that shows the usefulness of this? Probably want one in the example gallery as well. I had to read your code to understand the context here, which if I understand is to allow the secondary xaxis to have a y position specified in data co-ordinates rather than just axes co-ordinates. If that is the case, what happens if the y data limits are set so the secondary axis is out of the Axes viewport? |
|
@jklymak Yes, you are correct on the context. Right now, if an axis is out of the viewport it isn't drawn. The existing function behaves the same if you give it a location outside of the viewport. E.g. Good point on the examples, I'll take care of that. |
|
Hi @ZachDaChampion - it seems you also need a rebase here to incorporate changes made in the main branch. Here's a handy guide: https://matplotlib.org/stable/devel/development_workflow.html#rebasing-on-upstream-main Feel free to ping if you need more guidance! |
|
It appears that you did a merge instead of a rebase, which results in 884 commits (!!) showing up here. We have some docs for recovering from situations like this: https://matplotlib.org/stable/devel/development_workflow.html#recovering-from-mess-ups |
My bad, I didn't realize I pushed that version. Thanks for the link |
ffb9b8e to
cb55d34
Compare
|
Now that we have typing stubs, it looks like you'll have to update the corresponding lines in the |
4af5bc1 to
e33828f
Compare
b2d2bc7 to
941f455
Compare
|
Gentle ping to the reviewers - can you take another look here? Thanks! |
|
I can rebase later if needed |
QuLogic
left a comment
There was a problem hiding this comment.
Sorry we took a while to get back to this again. Just a couple minor fixes, but otherwise LGTM.
|
|
||
| fig, ax = plt.subplots(layout='constrained') | ||
| x = np.arange(0, 10) | ||
| np.random.seed(34) |
There was a problem hiding this comment.
We almost always use 19680801 as seed
| np.random.seed(34) | |
| np.random.seed(19680801) |
| else: | ||
| raise ValueError('secondary_yaxis location must be either ' | ||
| if not (location in ['left', 'right'] or isinstance(location, Real)): | ||
| raise ValueError('secondary_xaxis location must be either ' |
There was a problem hiding this comment.
Typo:
| raise ValueError('secondary_xaxis location must be either ' | |
| raise ValueError('secondary_yaxis location must be either ' |
| # Make sure transform is a Transform or None. | ||
| _api.check_isinstance((transforms.Transform, None), transform=transform) |
There was a problem hiding this comment.
I wouldn't bother with the comment; the function call is clear:
| # Make sure transform is a Transform or None. | |
| _api.check_isinstance((transforms.Transform, None), transform=transform) | |
| _api.check_isinstance((transforms.Transform, None), transform=transform) |
Add transform argument to secondary axes Update _secax_docstring Move new params to end of functions Add input check to secondary axes Add tests Add examples Move transform type checks and improve docs Add type stubs Update _secax_docstring Move new params to end of functions Add input check to secondary axes Move transform type checks and improve docs Fix rebase error Fix stub for SecondaryAxis.__init__ Clarify example Add default param to secax constructor Fix stub for secax constructor Simplify imports Co-authored-by: Elliott Sales de Andrade <[email protected]> Remove redundancy in docs Co-authored-by: Elliott Sales de Andrade <[email protected]> Fix typo
4905246 to
c1b51aa
Compare
|
I've rebased, squashed into one commit, fixed the typos, and force pushed here in the interest of getting this merged. |
|
Thanks @ZachDaChampion and congratulations on your first contribution to Matplotlib. 🎉 We'd love to see you back! |
PR Summary
resolves #25119.
I'm new to Matplotlib development so not sure if this is the best way to do this. I added a
transformparameter tosecondary_xaxisandsecondary_yaxisand passed that through intoSecondaryAxis._set_location(), where the transform is blended.I also updated
test_secondary_xy()andtest_secondary_fail()to test the transform.I'm not entirely sure if/where I'm meant to put
.. versionchanged::in the docsting, but I'm happy to add it if it's needed.PR Checklist
Documentation and Tests
pytestpasses)Release Notes
.. versionadded::directive in the docstring and documented indoc/users/next_whats_new/.. versionchanged::directive in the docstring and documented indoc/api/next_api_changes/next_whats_new/README.rstornext_api_changes/README.rst