tight_layout: fix regression for figures with non SubplotBase Axes #1163

Merged
merged 1 commit into from Aug 29, 2012
View
11 lib/matplotlib/figure.py
@@ -1424,16 +1424,15 @@ def tight_layout(self, renderer=None, pad=1.08, h_pad=None, w_pad=None, rect=Non
from tight_layout import get_renderer, get_tight_layout_figure
- no_go = [ax for ax in self.axes if not isinstance(ax, SubplotBase)]
- if no_go:
- warnings.Warn("Cannot use tight_layout;"
- " all Axes must descend from SubplotBase")
- return
+ subplot_axes = [ax for ax in self.axes if isinstance(ax, SubplotBase)]
+ if len(subplot_axes) < len(self.axes):
+ warnings.warn("tight_layout can only process Axes that descend "
@mdboom
mdboom Aug 29, 2012

I think the word "descend" here is a bit confusing. I think the more commonly used term in OO is "inherit". If there's no objections, since this is already merged, I'll just go ahead and fix this directly on master.

@efiring
efiring Aug 29, 2012
+ "from SubplotBase; results might be incorrect.")
if renderer is None:
renderer = get_renderer(self)
- kwargs = get_tight_layout_figure(self, self.axes, renderer,
+ kwargs = get_tight_layout_figure(self, subplot_axes, renderer,
pad=pad, h_pad=h_pad, w_pad=w_pad,
rect=rect)