Skip to content

include overspilling axes legends in ax.get_tightbbox #9164

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, 2017

Conversation

jklymak
Copy link
Member

@jklymak jklymak commented Sep 7, 2017

PR Summary

Expands ax.get_tightbbox to include legends.

Now something like

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(tight_layout=True)
ax.plot(range(10), label="Plot 1")
ax.plot(range(10, 0, -1), label="Plot 2")
ax.legend(loc='center right', bbox_to_anchor=(1.20, 0.5))
plt.show()

figure_1_and_3__pythonw_testgettight_py__python__and_2__jklymak_valdez____dropbox_teaching_eos314_docs__zsh_

will automatically make room for the legend (via tight_layout).

#9163
#9130

PR Checklist

  • Code is PEP 8 compliant

@choldgraf
Copy link
Contributor

choldgraf commented Oct 17, 2017

any idea why appveyor isn't happy?

IMO this is a super useful fix. This is an issue that is constantly coming up. I'd be +1 on backporting to the latest release since it's so simple...

quick other thought: another common "cut off" situation is when you add a figure title that's outside of the figure bounds...is there a straightforward way to capture that situation w/ a similar fix as you've got here?

@jklymak
Copy link
Member Author

jklymak commented Oct 17, 2017

@choldgraf The apveyor prob was just the same apveyor problem everyone has had. I'll rebase and resubmit. Its pretty trivial, and works fine w/ tight_layout...

@jklymak
Copy link
Member Author

jklymak commented Oct 17, 2017

@choldgraf This modifies the tight box for an axes. A suptitle isn't attached to an axes, so tight_layout can't know where it is trivially. However, #9082 does handle suptitle.

@jklymak jklymak requested a review from choldgraf October 17, 2017 19:00
Copy link
Member

@dstansby dstansby left a comment

Choose a reason for hiding this comment

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

👍 (does this count as an API change? maybe something should go in what's new?)

Copy link
Contributor

@choldgraf choldgraf left a comment

Choose a reason for hiding this comment

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

LGTM as it's quite a simple fix, though perhaps @dstansby should merge as they probably know more about the tight-layout machinery than I do

@jklymak
Copy link
Member Author

jklymak commented Oct 19, 2017

I suppose its an API change. However, I would expect the number of folks using tight_layout and a legend that is supposed to spill out the axis is vanishingly small since it didn’t work before ;-). The only situation I can see is where someone set up the legend to overspill the axis, it didn’t work when they called tight_layout, but they left the legend position in there anyway.

I will add a what’s new entry, but I don’t think this will break much real-life usage.

@jklymak
Copy link
Member Author

jklymak commented Oct 19, 2017

axes_legends_now_included_in_tight_bbox_ _matplotlib_2_1_0_post371_gfc04c62_documentation

@jklymak
Copy link
Member Author

jklymak commented Oct 21, 2017

@choldgraf Thanks for your help! Am I allowed to self-merge, or can you do it if you get a minute?

@choldgraf choldgraf merged commit d4ebfe4 into matplotlib:master Oct 21, 2017
@choldgraf
Copy link
Contributor

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