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

Merged
merged 1 commit into from Aug 29, 2012
@@ -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 Matplotlib Developers member

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 Matplotlib Developers member

On 2012/08/29 3:48 AM, Michael Droettboom wrote:

In 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 "
    

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.

I agree; I noticed the same thing, but didn't think to correct it. Go
ahead if you have not already done so.

+ "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)