-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Don't draw axis (spines, ticks, labels) twice when using parasite axes. #11688
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
Conversation
As this affects every axes drawn with the toolkits, I would think this is significant enough to get a what's new entry (there are no bug-fixed entries, right?) to tell people that those axes now look as great as the usual matplotlib axes and are hence even usable for publication quality figures. Is it too late to get this into 3.0? |
b0ced54
to
8e88094
Compare
Added a whatsnew. I don't particularly care re: 3.0 or not. |
We can just defer to the superclass' draw (axes._base.Axes.draw) which will correctly draw everything in get_children(); axislines.Axes.get_children already adds the axislines and gridlines to the superclass' get_children(). Likewise, get_tightbbox() doesn't need to be overridden because the superclass' get_tightbbox by default uses get_default_bbox_extra_artists, which fetches all visible children. (This point is not needed for the bugfix, but we may as well...) Don't bother using remove_text in the new figures, because that doesn't remove the labels anyways (and the tests are also about label placement).
8e88094
to
929bffb
Compare
def new_floating_axis(self, nth_coord, value, axis_direction="bottom"): | ||
gh = self.get_grid_helper() | ||
axis = gh.new_floating_axis(nth_coord, value, | ||
axis_direction=axis_direction, | ||
axes=self) | ||
return axis | ||
|
||
def draw(self, renderer, inframe=False): | ||
if not self._axisline_on: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is correctly handled in get_children
… twice when using parasite axes.
…688-on-v3.0.x Backport PR #11688 on branch v3.0.x (Don't draw axis (spines, ticks, labels) twice when using parasite axes.)
We can just defer to the superclass' draw (axes._base.Axes.draw)
which will correctly draw everything in get_children();
axislines.Axes.get_children already adds the axislines and gridlines to
the superclass' get_children().
Likewise, get_tightbbox() doesn't need to be overridden because the
superclass' get_tightbbox by default uses
get_default_bbox_extra_artists, which fetches all visible children.
(This point is not needed for the bugfix, but we may as well...)
Don't bother using remove_text in the new figures, because that doesn't
remove the labels anyways (and the tests are also about label placement).
Issue pointed out by @tacaswell in #11602 (comment) and @ImportanceOfBeingErnest in #11602 (comment).
I feel like I should charge a quarter for every bugfix that only involves deleting code :)
PR Summary
PR Checklist