From ab203bdd0d2d5be6f46b9d16051bd45733cf4a94 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Mon, 12 Aug 2019 22:11:11 +0200 Subject: [PATCH] Backport PR #14919: FIX constrained_layout w/ hidden axes --- lib/matplotlib/_constrained_layout.py | 6 +++++- lib/matplotlib/tests/test_constrainedlayout.py | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/_constrained_layout.py b/lib/matplotlib/_constrained_layout.py index a2a70fdc0212..a79b61be6754 100644 --- a/lib/matplotlib/_constrained_layout.py +++ b/lib/matplotlib/_constrained_layout.py @@ -280,7 +280,11 @@ def _make_layout_margins(ax, renderer, h_pad, w_pad): invTransFig = fig.transFigure.inverted().transform_bbox pos = ax.get_position(original=True) tightbbox = ax.get_tightbbox(renderer=renderer) - bbox = invTransFig(tightbbox) + if tightbbox is None: + bbox = pos + else: + bbox = invTransFig(tightbbox) + # this can go wrong: if not (np.isfinite(bbox.width) and np.isfinite(bbox.height)): # just abort, this is likely a bad set of co-ordinates that diff --git a/lib/matplotlib/tests/test_constrainedlayout.py b/lib/matplotlib/tests/test_constrainedlayout.py index df3e5cf18def..8769fcec3537 100644 --- a/lib/matplotlib/tests/test_constrainedlayout.py +++ b/lib/matplotlib/tests/test_constrainedlayout.py @@ -404,3 +404,16 @@ def test_colorbar_location(): fig.colorbar(pcm, ax=axs[-2, 3:], shrink=0.5, location='top') fig.colorbar(pcm, ax=axs[0, 0], shrink=0.5, location='left') fig.colorbar(pcm, ax=axs[1:3, 2], shrink=0.5, location='right') + + +def test_hidden_axes(): + # test that if we make an axes not visible that constrained_layout + # still works. Note the axes still takes space in the layout + # (as does a gridspec slot that is empty) + fig, axs = plt.subplots(2, 2, constrained_layout=True) + axs[0, 1].set_visible(False) + fig.canvas.draw() + extents1 = np.copy(axs[0, 0].get_position().extents) + + np.testing.assert_allclose(extents1, + [0.045552, 0.548288, 0.47319, 0.982638], rtol=1e-5) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy