From 474a90c50a75b5dbffa6b018ebc0a3a26f689649 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Wed, 22 Apr 2020 21:53:14 -0700 Subject: [PATCH] FIX: long titles x/ylabel layout --- doc/api/api_changes_3.3/behaviour.rst | 16 +++++++- lib/matplotlib/_constrained_layout.py | 6 ++- lib/matplotlib/axes/_base.py | 36 ++++++++++++++---- lib/matplotlib/axis.py | 22 ++++++++++- .../constrained_layout11.png | Bin 38251 -> 42649 bytes .../tests/test_constrainedlayout.py | 2 +- lib/matplotlib/tests/test_tightlayout.py | 12 ++---- lib/matplotlib/tight_layout.py | 11 +++++- 8 files changed, 82 insertions(+), 23 deletions(-) diff --git a/doc/api/api_changes_3.3/behaviour.rst b/doc/api/api_changes_3.3/behaviour.rst index 70a02d81b9d4..3b5e95521721 100644 --- a/doc/api/api_changes_3.3/behaviour.rst +++ b/doc/api/api_changes_3.3/behaviour.rst @@ -201,7 +201,6 @@ no longer accept the unsupported ``'best'`` location. Previously, invalid Axes locations would use ``'best'`` and invalid Figure locations would used ``'upper right'``. - Passing Line2D's *drawstyle* together with *linestyle* is removed ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -214,3 +213,18 @@ Upper case color strings Support for passing single-letter colors (one of "rgbcmykw") as UPPERCASE characters is removed; these colors are now case-sensitive (lowercase). + +tight/constrained_layout no longer worry about titles that are too wide +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +*tight_layout* and *constrained_layout* shrink axes to accommodate +"decorations" on the axes. However, if an xlabel or title is too long in the +x direction, making the axes smaller in the x-direction doesn't help. The +behavior of both has been changed to ignore the width of the title and +xlabel and the height of the ylabel in the layout logic. + +This also means there is a new keyword argument for `.axes.Axes.get_tightbbox`: +``for_layout_only``, which defaults to *False*, but if *True* returns a +bounding box using the rules above. `.axis.Axis.get_tightbbox` gets an +``ignore_label`` keyword argument, which is *None* by default, but which can +also be 'x' or 'y'. diff --git a/lib/matplotlib/_constrained_layout.py b/lib/matplotlib/_constrained_layout.py index 59143dc0165a..d9b82256bafd 100644 --- a/lib/matplotlib/_constrained_layout.py +++ b/lib/matplotlib/_constrained_layout.py @@ -258,7 +258,11 @@ def _make_layout_margins(ax, renderer, h_pad, w_pad): fig = ax.figure invTransFig = fig.transFigure.inverted().transform_bbox pos = ax.get_position(original=True) - tightbbox = ax.get_tightbbox(renderer=renderer) + try: + tightbbox = ax.get_tightbbox(renderer=renderer, for_layout_only=True) + except TypeError: + tightbbox = ax.get_tightbbox(renderer=renderer) + if tightbbox is None: bbox = pos else: diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index 5b105e13aeeb..5aba6d036a93 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -4086,11 +4086,15 @@ def get_default_bbox_extra_artists(self): for _axis in self._get_axis_list(): artists.remove(_axis) + artists.remove(self.title) + artists.remove(self._left_title) + artists.remove(self._right_title) + return [artist for artist in artists if (artist.get_visible() and artist.get_in_layout())] def get_tightbbox(self, renderer, call_axes_locator=True, - bbox_extra_artists=None): + bbox_extra_artists=None, *, for_layout_only=False): """ Return the tight bounding box of the axes, including axis and their decorators (xlabel, title, etc). @@ -4116,6 +4120,10 @@ def get_tightbbox(self, renderer, call_axes_locator=True, caller is only interested in the relative size of the tightbbox compared to the axes bbox. + for_layout_only : default: False + The bounding box will *not* include the x-extent of the title and + the xlabel, or the y-extent of the ylabel. + Returns ------- `.BboxBase` @@ -4141,22 +4149,37 @@ def get_tightbbox(self, renderer, call_axes_locator=True, self.apply_aspect() if self.axison: - bb_xaxis = self.xaxis.get_tightbbox(renderer) + igl = 'x' if for_layout_only else None + try: + bb_xaxis = self.xaxis.get_tightbbox(renderer, ignore_label=igl) + except TypeError: + # in case downstream library has redefined axis: + bb_xaxis = self.xaxis.get_tightbbox(renderer) if bb_xaxis: bb.append(bb_xaxis) - bb_yaxis = self.yaxis.get_tightbbox(renderer) + igl = 'y' if for_layout_only else None + try: + bb_yaxis = self.yaxis.get_tightbbox(renderer, ignore_label=igl) + except TypeError: + # in case downstream library has redefined axis: + bb_xaxis = self.yaxis.get_tightbbox(renderer) if bb_yaxis: bb.append(bb_yaxis) - self._update_title_position(renderer) - axbbox = self.get_window_extent(renderer) bb.append(axbbox) for title in [self.title, self._left_title, self._right_title]: if title.get_visible(): - bb.append(title.get_window_extent(renderer)) + bt = title.get_window_extent(renderer) + if for_layout_only and bt.width > 0: + # make the title bbox 1 pixel wide so its width + # is not accounted for in bbox calculations in + # tight/constrained_layout + bt.x0 = (bt.x0 + bt.x1) / 2 - 0.5 + bt.x1 = bt.x0 + 1.0 + bb.append(bt) bbox_artists = bbox_extra_artists if bbox_artists is None: @@ -4179,7 +4202,6 @@ def get_tightbbox(self, renderer, call_axes_locator=True, and 0 < bbox.width < np.inf and 0 < bbox.height < np.inf): bb.append(bbox) - return mtransforms.Bbox.union( [b for b in bb if b.width != 0 or b.height != 0]) diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index 359999c73720..8bf310e6cd98 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -1079,10 +1079,15 @@ def _get_tick_bboxes(self, ticks, renderer): [tick.label2.get_window_extent(renderer) for tick in ticks if tick.label2.get_visible()]) - def get_tightbbox(self, renderer): + def get_tightbbox(self, renderer, *, ignore_label=None): """ Return a bounding box that encloses the axis. It only accounts tick labels, axis label, and offsetText. + + If ``ignore_label`` is 'x', then the width of the label is collapsed + to near zero. If 'y', then the height is collapsed to near zero. This + is for tight/constrained_layout to be able to ignore too-long labels + when doing their layout. """ if not self.get_visible(): return @@ -1100,11 +1105,24 @@ def get_tightbbox(self, renderer): bboxes = [ *(a.get_window_extent(renderer) - for a in [self.label, self.offsetText] + for a in [self.offsetText] if a.get_visible()), *ticklabelBoxes, *ticklabelBoxes2, ] + # take care of label + if self.label.get_visible(): + bb = self.label.get_window_extent(renderer) + # for constrained/tight_layout, we want to ignore the label's + # width because the adjustments they make can't be improved. + # this code collapses the relevant direction + if ignore_label == 'x' and bb.width > 0: + bb.x0 = (bb.x0 + bb.x1) / 2 - 0.5 + bb.x1 = bb.x0 + 1.0 + elif ignore_label == 'y' and bb.height > 0: + bb.y0 = (bb.y0 + bb.y1) / 2 - 0.5 + bb.y1 = bb.y0 + 1.0 + bboxes.append(bb) bboxes = [b for b in bboxes if 0 < b.width < np.inf and 0 < b.height < np.inf] if bboxes: diff --git a/lib/matplotlib/tests/baseline_images/test_constrainedlayout/constrained_layout11.png b/lib/matplotlib/tests/baseline_images/test_constrainedlayout/constrained_layout11.png index 4916c44892c1afe2f7f84049d8a5598e91113bf8..e8974806d993ef5a6bc6522e6d130ebafc8bc48f 100644 GIT binary patch literal 42649 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 z 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 Xd4XT7^8J5M@Uu_#ph~XN$@BjoK0Su} literal 38251 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⁣QTEekdG4X4ayFAjBxLobrN&v`#v)SAo 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 diff --git a/lib/matplotlib/tests/test_constrainedlayout.py b/lib/matplotlib/tests/test_constrainedlayout.py index 0c3005c0a2d4..46e6b9663ef3 100644 --- a/lib/matplotlib/tests/test_constrainedlayout.py +++ b/lib/matplotlib/tests/test_constrainedlayout.py @@ -176,7 +176,7 @@ def test_constrained_layout10(): @image_comparison(['constrained_layout11.png']) def test_constrained_layout11(): """Test for multiple nested gridspecs""" - fig = plt.figure(constrained_layout=True, figsize=(10, 3)) + fig = plt.figure(constrained_layout=True, figsize=(13, 3)) gs0 = gridspec.GridSpec(1, 2, figure=fig) gsl = gridspec.GridSpecFromSubplotSpec(1, 2, gs0[0]) gsl0 = gridspec.GridSpecFromSubplotSpec(2, 2, gsl[1]) diff --git a/lib/matplotlib/tests/test_tightlayout.py b/lib/matplotlib/tests/test_tightlayout.py index 6934fe75c53e..c73992c38c6d 100644 --- a/lib/matplotlib/tests/test_tightlayout.py +++ b/lib/matplotlib/tests/test_tightlayout.py @@ -258,29 +258,23 @@ def test_empty_layout(): @pytest.mark.parametrize("label", ["xlabel", "ylabel"]) def test_verybig_decorators(label): - """Test that warning emitted when xlabel/ylabel too big.""" + """Test that no warning emitted when xlabel/ylabel too big.""" fig, ax = plt.subplots(figsize=(3, 2)) ax.set(**{label: 'a' * 100}) - with pytest.warns(UserWarning): - fig.tight_layout() def test_big_decorators_horizontal(): - """Test that warning emitted when xlabel too big.""" + """Test that doesn't warn when xlabel too big.""" fig, axs = plt.subplots(1, 2, figsize=(3, 2)) axs[0].set_xlabel('a' * 30) axs[1].set_xlabel('b' * 30) - with pytest.warns(UserWarning): - fig.tight_layout() def test_big_decorators_vertical(): - """Test that warning emitted when xlabel too big.""" + """Test that doesn't warn when ylabel too big.""" fig, axs = plt.subplots(2, 1, figsize=(3, 2)) axs[0].set_ylabel('a' * 20) axs[1].set_ylabel('b' * 20) - with pytest.warns(UserWarning): - fig.tight_layout() def test_badsubplotgrid(): diff --git a/lib/matplotlib/tight_layout.py b/lib/matplotlib/tight_layout.py index 65d8c372f7c9..eddd0d678736 100644 --- a/lib/matplotlib/tight_layout.py +++ b/lib/matplotlib/tight_layout.py @@ -77,8 +77,15 @@ def auto_adjust_subplotpars( if all(not ax.get_visible() for ax in subplots): continue - tight_bbox_raw = Bbox.union([ - ax.get_tightbbox(renderer) for ax in subplots if ax.get_visible()]) + bb = [] + for ax in subplots: + if ax.get_visible(): + try: + bb += [ax.get_tightbbox(renderer, for_layout_only=True)] + except TypeError: + bb += [ax.get_tightbbox(renderer)] + + tight_bbox_raw = Bbox.union(bb) tight_bbox = TransformedBbox(tight_bbox_raw, fig.transFigure.inverted())