From 5cc5541fd835348a645b3a7828e04fcce0ce03dd Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Sun, 4 Nov 2018 22:07:58 -0800 Subject: [PATCH 1/2] FIX: return the actual ax.get_window_extent --- doc/api/next_api_changes/2018-11-04-JMK.rst | 18 ++ lib/matplotlib/axes/_base.py | 47 ++-- lib/matplotlib/spines.py | 52 ++++- .../test_axes/secondary_xy.png | Bin 42332 -> 42367 bytes .../test_backend_pgf/pgf_bbox_inches.pdf | Bin 3809 -> 3803 bytes .../test_colorbar_location.png | Bin 13142 -> 14080 bytes .../test_table/table_auto_column.png | Bin 46444 -> 46538 bytes .../test_table/table_cell_manipulation.png | Bin 6745 -> 7953 bytes .../test_table/table_labels.png | Bin 16004 -> 16098 bytes .../test_table/table_zorder.png | Bin 36195 -> 36289 bytes .../test_text/large_subscript_title.png | Bin 11979 -> 11673 bytes lib/matplotlib/tests/test_axes.py | 4 +- lib/matplotlib/tests/test_get_extents.py | 202 ++++++++++++++++++ lib/matplotlib/tests/test_tightlayout.py | 17 +- .../test_axes_grid1/image_grid.png | Bin 3872 -> 3786 bytes 15 files changed, 311 insertions(+), 29 deletions(-) create mode 100644 doc/api/next_api_changes/2018-11-04-JMK.rst create mode 100644 lib/matplotlib/tests/test_get_extents.py diff --git a/doc/api/next_api_changes/2018-11-04-JMK.rst b/doc/api/next_api_changes/2018-11-04-JMK.rst new file mode 100644 index 000000000000..878273d7fda9 --- /dev/null +++ b/doc/api/next_api_changes/2018-11-04-JMK.rst @@ -0,0 +1,18 @@ +get_window_extents changes: +--------------------------- + +`.matplotlib.axes.Axes.get_window_extent` used to return a bounding box +that was slightly larger than the axes, presumably to take into account +the ticks that may be on a spine. However, it was not scaling the tick sizes +according to the dpi of the canvas, and it did not check if the ticks were +visible, or on the spine. + +Now `.matplotlib.axes.Axes.get_window_extent` just returns the axes extent +with no padding for ticks. + +This affects `.matplotlib.axes.Axes.get_tightbbox` in cases where there are +outward ticks with no tick labels, and it also removes the (small) pad around +axes in that case. + +`.spines.get_window_extent` now takes into account ticks that are on the +spine. diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index 441fc822ce09..48b7a499aed6 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -576,18 +576,21 @@ def __setstate__(self, state): def get_window_extent(self, *args, **kwargs): """ - get the axes bounding box in display space; *args* and - *kwargs* are empty - """ - bbox = self.bbox - x_pad = 0 - if self.axison and self.xaxis.get_visible(): - x_pad = self.xaxis.get_tick_padding() - y_pad = 0 - if self.axison and self.yaxis.get_visible(): - y_pad = self.yaxis.get_tick_padding() - return mtransforms.Bbox([[bbox.x0 - x_pad, bbox.y0 - y_pad], - [bbox.x1 + x_pad, bbox.y1 + y_pad]]) + Return the axes bounding box in display space; *args* and *kwargs* + are empty. + + This bounding box does not include the spines, ticks, ticklables, + or other labels. For a bounding box including these elements use + `~matplotlib.axes.Axes.get_tightbbox`. + + See Also + -------- + matplotlib.axes.Axes.get_tightbbox + matplotlib.axis.Axis.get_tightbbox + matplotlib.spines.get_window_extent + + """ + return self.bbox def _init_axis(self): "move this out of __init__ because non-separable axes don't use it" @@ -4286,6 +4289,13 @@ def get_tightbbox(self, renderer, call_axes_locator=True, ------- bbox : `.BboxBase` bounding box in figure pixel coordinates. + + See Also + -------- + matplotlib.axis.Axes.get_window_extent + matplotlib.axis.Axis.get_tightbbox + matplotlib.spines.get_window_extent + """ bb = [] @@ -4300,13 +4310,14 @@ def get_tightbbox(self, renderer, call_axes_locator=True, else: self.apply_aspect() - bb_xaxis = self.xaxis.get_tightbbox(renderer) - if bb_xaxis: - bb.append(bb_xaxis) + if self.axison: + bb_xaxis = self.xaxis.get_tightbbox(renderer) + if bb_xaxis: + bb.append(bb_xaxis) - bb_yaxis = self.yaxis.get_tightbbox(renderer) - if bb_yaxis: - bb.append(bb_yaxis) + bb_yaxis = self.yaxis.get_tightbbox(renderer) + if bb_yaxis: + bb.append(bb_yaxis) self._update_title_position(renderer) bb.append(self.get_window_extent(renderer)) diff --git a/lib/matplotlib/spines.py b/lib/matplotlib/spines.py index d5d3880b88d5..042bf84d4bfc 100644 --- a/lib/matplotlib/spines.py +++ b/lib/matplotlib/spines.py @@ -145,10 +145,60 @@ def get_patch_transform(self): return super().get_patch_transform() def get_window_extent(self, renderer=None): + """ + Return the window extent of the spines in display space, including + padding for ticks (but not their labels) + + See Also + -------- + matplotlib.axes.Axes.get_tightbbox + matplotlib.axes.Axes.get_window_extent + + """ # make sure the location is updated so that transforms etc are # correct: self._adjust_location() - return super().get_window_extent(renderer=renderer) + bb = super().get_window_extent(renderer=renderer) + bboxes = [bb] + tickstocheck = [self.axis.majorTicks[0]] + if len(self.axis.minorTicks) > 1: + # only pad for minor ticks if there are more than one + # of them. There is always one... + tickstocheck.append(self.axis.minorTicks[1]) + for tick in tickstocheck: + bb0 = bb.frozen() + tickl = tick._size + tickdir = tick._tickdir + if tickdir == 'out': + padout = 1 + padin = 0 + elif tickdir == 'in': + padout = 0 + padin = 1 + else: + padout = 0.5 + padin = 0.5 + padout = padout * tickl / 72 * self.figure.dpi + padin = padin * tickl / 72 * self.figure.dpi + + if tick.tick1line.get_visible(): + if self.spine_type in ['left']: + bb0.x0 = bb0.x0 - padout + bb0.x1 = bb0.x1 + padin + elif self.spine_type in ['bottom']: + bb0.y0 = bb0.y0 - padout + bb0.y1 = bb0.y1 + padin + + if tick.tick2line.get_visible(): + if self.spine_type in ['right']: + bb0.x1 = bb0.x1 + padout + bb0.x0 = bb0.x0 - padin + elif self.spine_type in ['top']: + bb0.y1 = bb0.y1 + padout + bb0.y0 = bb0.y0 - padout + bboxes.append(bb0) + + return mtransforms.Bbox.union(bboxes) def get_path(self): return self._path diff --git a/lib/matplotlib/tests/baseline_images/test_axes/secondary_xy.png b/lib/matplotlib/tests/baseline_images/test_axes/secondary_xy.png index 2e91f63326eedb185fb2f5637c3801a4b0739dfb..392038e08dd54e96702b036754812c66e50625ea 100644 GIT binary patch literal 42367 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 literal 42332 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 K-0J!or2hf_j8gaj delta 3371 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 diff --git a/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_colorbar_location.png b/lib/matplotlib/tests/baseline_images/test_constrainedlayout/test_colorbar_location.png index 6d2351922688791674774cf96a33a081356dca4d..c5361afd402e908c0d66d01e295098ccc6c45191 100644 GIT binary patch literal 14080 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 z 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�Oa=%T$#hKV03>bNi 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 diff --git a/lib/matplotlib/tests/baseline_images/test_table/table_auto_column.png b/lib/matplotlib/tests/baseline_images/test_table/table_auto_column.png index 9e0472b3c011fae2a53650ed1989c00c9847c5f9..6dc11a67464e1f1eb0a8dd34f8e0cd6b1ee23438 100644 GIT binary patch delta 105 zcmaF!is{sArU@P~3_&HX5hcO-X(i=}MX3zAi6sR&`6W4-NeX4DMa7xjv?SZfaWr7V{>h delta 12 UcmX^0n(56erU@P!m#J(804>%Am;e9( diff --git a/lib/matplotlib/tests/baseline_images/test_table/table_cell_manipulation.png b/lib/matplotlib/tests/baseline_images/test_table/table_cell_manipulation.png index bd805406edd3ecb7780752e426ef0cb7aaa4e930..778e578029827b825863af2bd2c48a78db1bc5f3 100644 GIT binary patch literal 7953 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 literal 6745 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 delta 10 RcmaD<+fqBhW8*R#I{+U71quKF diff --git a/lib/matplotlib/tests/baseline_images/test_table/table_zorder.png b/lib/matplotlib/tests/baseline_images/test_table/table_zorder.png index 58f70066e7ab539ae29497701c00f39728211f6f..025ea5e0c4d2537977ef1c35812840a2d63fc3e8 100644 GIT binary patch delta 105 zcmaDni|OEOrU@P~3_&HX5hcO-X(i=}MX3zAi6sR&`6W4-NeX4DMa7xjv?SZnC`q&r>DB delta 12 UcmX>&o9Xc^rU@P!mr3^m04DDRwEzGB diff --git a/lib/matplotlib/tests/baseline_images/test_text/large_subscript_title.png b/lib/matplotlib/tests/baseline_images/test_text/large_subscript_title.png index 978f1291455bb9319c2b3c7cba41658ddc3d6673..36c0eeb5f88e923aa020c3c7c9ee51b804334fac 100644 GIT binary patch literal 11673 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 XOW@mK5eDEl1d$e(zg=+i-oyU`AS$Di literal 11979 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 diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 25dc08dc5420..676116634e5f 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -5891,9 +5891,9 @@ def test_tick_padding_tightbbox(): plt.rcParams["xtick.direction"] = "out" plt.rcParams["ytick.direction"] = "out" fig, ax = plt.subplots() - bb = ax.get_window_extent(fig.canvas.get_renderer()) + bb = ax.get_tightbbox(fig.canvas.get_renderer()) ax.axis('off') - bb2 = ax.get_window_extent(fig.canvas.get_renderer()) + bb2 = ax.get_tightbbox(fig.canvas.get_renderer()) assert bb.x0 < bb2.x0 assert bb.y0 < bb2.y0 diff --git a/lib/matplotlib/tests/test_get_extents.py b/lib/matplotlib/tests/test_get_extents.py new file mode 100644 index 000000000000..7ed6abff0b21 --- /dev/null +++ b/lib/matplotlib/tests/test_get_extents.py @@ -0,0 +1,202 @@ +import numpy as np +from numpy.testing import (assert_allclose, assert_almost_equal, + assert_array_equal, assert_array_almost_equal) + +from matplotlib import rc_context +import matplotlib.pyplot as plt +import matplotlib.transforms as mtransforms + + +def color_boxes(fig, axs): + fig.canvas.draw() + + renderer = fig.canvas.get_renderer() + bbaxis = [] + for nn, axx in enumerate([axs.xaxis, axs.yaxis]): + bb = axx.get_tightbbox(renderer) + if bb: + axisr = plt.Rectangle((bb.x0, bb.y0), width=bb.width, + height=bb.height, linewidth=0.7, edgecolor='y', + facecolor="none", transform=None, zorder=3) + fig.add_artist(axisr) + bbaxis += [bb] + + bbspines = [] + for nn, a in enumerate(['bottom', 'top', 'left', 'right']): + bb = axs.spines[a].get_window_extent(renderer) + if bb: + spiner = plt.Rectangle((bb.x0, bb.y0), width=bb.width, + height=bb.height, linewidth=0.7, + edgecolor="green", facecolor="none", + transform=None, zorder=3) + fig.add_artist(spiner) + bbspines += [bb] + + bb = axs.get_window_extent() + if bb: + rect2 = plt.Rectangle((bb.x0, bb.y0), width=bb.width, height=bb.height, + linewidth=1.5, edgecolor="magenta", + facecolor="none", transform=None, zorder=2) + fig.add_artist(rect2) + bbax = bb + + bb2 = axs.get_tightbbox(renderer) + if bb2: + rect2 = plt.Rectangle((bb2.x0, bb2.y0), width=bb2.width, + height=bb2.height, linewidth=3, edgecolor="red", + facecolor="none", transform=None, zorder=1) + fig.add_artist(rect2) + bbtb = bb2 + return bbaxis, bbspines, bbax, bbtb + + +def test_normal_axes(): + with rc_context({'_internal.classic_mode': False}): + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + fig.canvas.draw() + plt.close(fig) + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + + # test the axis bboxes + target = [ + [123.375, 75.88888888888886, 983.25, 33.0], + [85.51388888888889, 99.99999999999997, 53.375, 993.0] + ] + for nn, b in enumerate(bbaxis): + targetbb = mtransforms.Bbox.from_bounds(*target[nn]) + assert_array_almost_equal(b.bounds, targetbb.bounds, decimal=2) + + target = [ + [150.0, 119.999, 930.0, 11.111], + [150.0, 1080.0, 930.0, 0.0], + [150.0, 119.9999, 11.111, 960.0], + [1068.8888, 119.9999, 11.111, 960.0] + ] + for nn, b in enumerate(bbspines): + targetbb = mtransforms.Bbox.from_bounds(*target[nn]) + assert_array_almost_equal(b.bounds, targetbb.bounds, decimal=2) + + target = [150.0, 119.99999999999997, 930.0, 960.0] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_array_almost_equal(bbax.bounds, targetbb.bounds, decimal=2) + + target = [85.5138, 75.88888, 1021.11, 1017.11] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_array_almost_equal(bbtb.bounds, targetbb.bounds, decimal=2) + + # test that get_position roundtrips to get_window_extent + axbb = ax.get_position().transformed(fig.transFigure).bounds + assert_array_almost_equal(axbb, ax.get_window_extent().bounds, decimal=2) + + +def test_nodecorator(): + with rc_context({'_internal.classic_mode': False}): + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + fig.canvas.draw() + ax.set(xticklabels=[], yticklabels=[]) + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + + # test the axis bboxes + target = [ + None, + None + ] + for nn, b in enumerate(bbaxis): + assert b is None + + target = [ + [150.0, 119.999, 930.0, 11.111], + [150.0, 1080.0, 930.0, 0.0], + [150.0, 119.9999, 11.111, 960.0], + [1068.8888, 119.9999, 11.111, 960.0] + ] + for nn, b in enumerate(bbspines): + targetbb = mtransforms.Bbox.from_bounds(*target[nn]) + assert_allclose(b.bounds, targetbb.bounds, atol=1e-2) + + target = [150.0, 119.99999999999997, 930.0, 960.0] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_allclose(bbax.bounds, targetbb.bounds, atol=1e-2) + + target = [150., 120., 930., 960.] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_allclose(bbtb.bounds, targetbb.bounds, atol=1e-2) + + +def test_displaced_spine(): + with rc_context({'_internal.classic_mode': False}): + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + ax.set(xticklabels=[], yticklabels=[]) + ax.spines['bottom'].set_position(('axes', -0.1)) + fig.canvas.draw() + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + + target = [ + [150., 24., 930., 11.111111], + [150.0, 1080.0, 930.0, 0.0], + [150.0, 119.9999, 11.111, 960.0], + [1068.8888, 119.9999, 11.111, 960.0] + ] + for nn, b in enumerate(bbspines): + targetbb = mtransforms.Bbox.from_bounds(*target[nn]) + + target = [150.0, 119.99999999999997, 930.0, 960.0] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_allclose(bbax.bounds, targetbb.bounds, atol=1e-2) + + target = [150., 24., 930., 1056.] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_allclose(bbtb.bounds, targetbb.bounds, atol=1e-2) + + +def test_tickdirs(): + """ + Switch the tickdirs and make sure the bboxes switch with them + """ + targets = [[[150.0, 120.0, 930.0, 11.1111], + [150.0, 120.0, 11.111, 960.0]], + [[150.0, 108.8889, 930.0, 11.111111111111114], + [138.889, 120, 11.111, 960.0]], + [[150.0, 114.44444444444441, 930.0, 11.111111111111114], + [144.44444444444446, 119.999, 11.111, 960.0]]] + for dnum, dirs in enumerate(['in', 'out', 'inout']): + with rc_context({'_internal.classic_mode': False}): + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + ax.tick_params(direction=dirs) + fig.canvas.draw() + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + for nn, num in enumerate([0, 2]): + targetbb = mtransforms.Bbox.from_bounds(*targets[dnum][nn]) + assert_allclose(bbspines[num].bounds, targetbb.bounds, + atol=1e-2) + + +def test_minor_accountedfor(): + with rc_context({'_internal.classic_mode': False}): + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + fig.canvas.draw() + ax.tick_params(which='both', direction='out') + + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + targets = [[150.0, 108.88888888888886, 930.0, 11.111111111111114], + [138.8889, 119.9999, 11.1111, 960.0]] + for n in range(2): + targetbb = mtransforms.Bbox.from_bounds(*targets[n]) + assert_allclose(bbspines[n * 2].bounds, targetbb.bounds, + atol=1e-2) + + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + fig.canvas.draw() + ax.tick_params(which='both', direction='out') + ax.minorticks_on() + ax.tick_params(axis='both', which='minor', length=30) + fig.canvas.draw() + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + targets = [[150.0, 36.66666666666663, 930.0, 83.33333333333334], + [66.6667, 120.0, 83.3333, 960.0]] + + for n in range(2): + targetbb = mtransforms.Bbox.from_bounds(*targets[n]) + assert_allclose(bbspines[n * 2].bounds, targetbb.bounds, + atol=1e-2) diff --git a/lib/matplotlib/tests/test_tightlayout.py b/lib/matplotlib/tests/test_tightlayout.py index bae8951f8cd3..0f9f8737a305 100644 --- a/lib/matplotlib/tests/test_tightlayout.py +++ b/lib/matplotlib/tests/test_tightlayout.py @@ -184,14 +184,15 @@ def test_outward_ticks(): ax.xaxis.set_tick_params(tickdir='out', length=32, width=3) ax.yaxis.set_tick_params(tickdir='out', length=32, width=3) plt.tight_layout() - assert_array_equal( - np.round([ax.get_position().get_points() for ax in fig.axes], 3), - # These values were obtained after visual checking that they correspond - # to a tight layouting that did take the ticks into account. - [[[0.091, 0.590], [0.437, 0.903]], - [[0.581, 0.590], [0.927, 0.903]], - [[0.091, 0.140], [0.437, 0.454]], - [[0.581, 0.140], [0.927, 0.454]]]) + # These values were obtained after visual checking that they correspond + # to a tight layouting that did take the ticks into account. + ans = [[[0.091, 0.607], [0.433, 0.933]], + [[0.579, 0.607], [0.922, 0.933]], + [[0.091, 0.140], [0.433, 0.466]], + [[0.579, 0.140], [0.922, 0.466]]] + for nn, ax in enumerate(fig.axes): + assert_array_equal(np.round(ax.get_position().get_points(), 3), + ans[nn]) def add_offsetboxes(ax, size=10, margin=.1, color='black'): diff --git a/lib/mpl_toolkits/tests/baseline_images/test_axes_grid1/image_grid.png b/lib/mpl_toolkits/tests/baseline_images/test_axes_grid1/image_grid.png index c4a2aae5607e2284bf63a86c15d6b9e07d7676ea..a696787a0248babbb711425e854825778b63b675 100644 GIT binary patch literal 3786 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 literal 3872 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 From c676f45cf3251e17193e79e013912d69c2485554 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Mon, 25 Feb 2019 07:30:32 -0800 Subject: [PATCH 2/2] TST: fix tests --- lib/matplotlib/tests/test_axes.py | 197 ++++++++++++++++++++++ lib/matplotlib/tests/test_get_extents.py | 202 ----------------------- 2 files changed, 197 insertions(+), 202 deletions(-) delete mode 100644 lib/matplotlib/tests/test_get_extents.py diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 676116634e5f..e0378419acb0 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -23,8 +23,10 @@ import matplotlib.markers as mmarkers import matplotlib.patches as mpatches import matplotlib.colors as mcolors +import matplotlib.transforms as mtransforms from numpy.testing import ( assert_allclose, assert_array_equal, assert_array_almost_equal) +from matplotlib import rc_context from matplotlib.cbook import ( IgnoredKeywordWarning, MatplotlibDeprecationWarning) @@ -6063,3 +6065,198 @@ def invert(x): fig.canvas.draw() fig.set_size_inches((7, 4)) assert_allclose(ax.get_position().extents, [0.125, 0.1, 0.9, 0.9]) + + +def color_boxes(fig, axs): + """ + Helper for the tests below that test the extents of various axes elements + """ + fig.canvas.draw() + + renderer = fig.canvas.get_renderer() + bbaxis = [] + for nn, axx in enumerate([axs.xaxis, axs.yaxis]): + bb = axx.get_tightbbox(renderer) + if bb: + axisr = plt.Rectangle((bb.x0, bb.y0), width=bb.width, + height=bb.height, linewidth=0.7, edgecolor='y', + facecolor="none", transform=None, zorder=3) + fig.add_artist(axisr) + bbaxis += [bb] + + bbspines = [] + for nn, a in enumerate(['bottom', 'top', 'left', 'right']): + bb = axs.spines[a].get_window_extent(renderer) + spiner = plt.Rectangle((bb.x0, bb.y0), width=bb.width, + height=bb.height, linewidth=0.7, + edgecolor="green", facecolor="none", + transform=None, zorder=3) + fig.add_artist(spiner) + bbspines += [bb] + + bb = axs.get_window_extent() + rect2 = plt.Rectangle((bb.x0, bb.y0), width=bb.width, height=bb.height, + linewidth=1.5, edgecolor="magenta", + facecolor="none", transform=None, zorder=2) + fig.add_artist(rect2) + bbax = bb + + bb2 = axs.get_tightbbox(renderer) + rect2 = plt.Rectangle((bb2.x0, bb2.y0), width=bb2.width, + height=bb2.height, linewidth=3, edgecolor="red", + facecolor="none", transform=None, zorder=1) + fig.add_artist(rect2) + bbtb = bb2 + return bbaxis, bbspines, bbax, bbtb + + +def test_normal_axes(): + with rc_context({'_internal.classic_mode': False}): + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + fig.canvas.draw() + plt.close(fig) + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + + # test the axis bboxes + target = [ + [123.375, 75.88888888888886, 983.25, 33.0], + [85.51388888888889, 99.99999999999997, 53.375, 993.0] + ] + for nn, b in enumerate(bbaxis): + targetbb = mtransforms.Bbox.from_bounds(*target[nn]) + assert_array_almost_equal(b.bounds, targetbb.bounds, decimal=2) + + target = [ + [150.0, 119.999, 930.0, 11.111], + [150.0, 1080.0, 930.0, 0.0], + [150.0, 119.9999, 11.111, 960.0], + [1068.8888, 119.9999, 11.111, 960.0] + ] + for nn, b in enumerate(bbspines): + targetbb = mtransforms.Bbox.from_bounds(*target[nn]) + assert_array_almost_equal(b.bounds, targetbb.bounds, decimal=2) + + target = [150.0, 119.99999999999997, 930.0, 960.0] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_array_almost_equal(bbax.bounds, targetbb.bounds, decimal=2) + + target = [85.5138, 75.88888, 1021.11, 1017.11] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_array_almost_equal(bbtb.bounds, targetbb.bounds, decimal=2) + + # test that get_position roundtrips to get_window_extent + axbb = ax.get_position().transformed(fig.transFigure).bounds + assert_array_almost_equal(axbb, ax.get_window_extent().bounds, decimal=2) + + +def test_nodecorator(): + with rc_context({'_internal.classic_mode': False}): + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + fig.canvas.draw() + ax.set(xticklabels=[], yticklabels=[]) + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + + # test the axis bboxes + target = [ + None, + None + ] + for nn, b in enumerate(bbaxis): + assert b is None + + target = [ + [150.0, 119.999, 930.0, 11.111], + [150.0, 1080.0, 930.0, 0.0], + [150.0, 119.9999, 11.111, 960.0], + [1068.8888, 119.9999, 11.111, 960.0] + ] + for nn, b in enumerate(bbspines): + targetbb = mtransforms.Bbox.from_bounds(*target[nn]) + assert_allclose(b.bounds, targetbb.bounds, atol=1e-2) + + target = [150.0, 119.99999999999997, 930.0, 960.0] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_allclose(bbax.bounds, targetbb.bounds, atol=1e-2) + + target = [150., 120., 930., 960.] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_allclose(bbtb.bounds, targetbb.bounds, atol=1e-2) + + +def test_displaced_spine(): + with rc_context({'_internal.classic_mode': False}): + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + ax.set(xticklabels=[], yticklabels=[]) + ax.spines['bottom'].set_position(('axes', -0.1)) + fig.canvas.draw() + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + + target = [ + [150., 24., 930., 11.111111], + [150.0, 1080.0, 930.0, 0.0], + [150.0, 119.9999, 11.111, 960.0], + [1068.8888, 119.9999, 11.111, 960.0] + ] + for nn, b in enumerate(bbspines): + targetbb = mtransforms.Bbox.from_bounds(*target[nn]) + + target = [150.0, 119.99999999999997, 930.0, 960.0] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_allclose(bbax.bounds, targetbb.bounds, atol=1e-2) + + target = [150., 24., 930., 1056.] + targetbb = mtransforms.Bbox.from_bounds(*target) + assert_allclose(bbtb.bounds, targetbb.bounds, atol=1e-2) + + +def test_tickdirs(): + """ + Switch the tickdirs and make sure the bboxes switch with them + """ + targets = [[[150.0, 120.0, 930.0, 11.1111], + [150.0, 120.0, 11.111, 960.0]], + [[150.0, 108.8889, 930.0, 11.111111111111114], + [138.889, 120, 11.111, 960.0]], + [[150.0, 114.44444444444441, 930.0, 11.111111111111114], + [144.44444444444446, 119.999, 11.111, 960.0]]] + for dnum, dirs in enumerate(['in', 'out', 'inout']): + with rc_context({'_internal.classic_mode': False}): + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + ax.tick_params(direction=dirs) + fig.canvas.draw() + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + for nn, num in enumerate([0, 2]): + targetbb = mtransforms.Bbox.from_bounds(*targets[dnum][nn]) + assert_allclose(bbspines[num].bounds, targetbb.bounds, + atol=1e-2) + + +def test_minor_accountedfor(): + with rc_context({'_internal.classic_mode': False}): + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + fig.canvas.draw() + ax.tick_params(which='both', direction='out') + + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + targets = [[150.0, 108.88888888888886, 930.0, 11.111111111111114], + [138.8889, 119.9999, 11.1111, 960.0]] + for n in range(2): + targetbb = mtransforms.Bbox.from_bounds(*targets[n]) + assert_allclose(bbspines[n * 2].bounds, targetbb.bounds, + atol=1e-2) + + fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) + fig.canvas.draw() + ax.tick_params(which='both', direction='out') + ax.minorticks_on() + ax.tick_params(axis='both', which='minor', length=30) + fig.canvas.draw() + bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) + targets = [[150.0, 36.66666666666663, 930.0, 83.33333333333334], + [66.6667, 120.0, 83.3333, 960.0]] + + for n in range(2): + targetbb = mtransforms.Bbox.from_bounds(*targets[n]) + assert_allclose(bbspines[n * 2].bounds, targetbb.bounds, + atol=1e-2) diff --git a/lib/matplotlib/tests/test_get_extents.py b/lib/matplotlib/tests/test_get_extents.py deleted file mode 100644 index 7ed6abff0b21..000000000000 --- a/lib/matplotlib/tests/test_get_extents.py +++ /dev/null @@ -1,202 +0,0 @@ -import numpy as np -from numpy.testing import (assert_allclose, assert_almost_equal, - assert_array_equal, assert_array_almost_equal) - -from matplotlib import rc_context -import matplotlib.pyplot as plt -import matplotlib.transforms as mtransforms - - -def color_boxes(fig, axs): - fig.canvas.draw() - - renderer = fig.canvas.get_renderer() - bbaxis = [] - for nn, axx in enumerate([axs.xaxis, axs.yaxis]): - bb = axx.get_tightbbox(renderer) - if bb: - axisr = plt.Rectangle((bb.x0, bb.y0), width=bb.width, - height=bb.height, linewidth=0.7, edgecolor='y', - facecolor="none", transform=None, zorder=3) - fig.add_artist(axisr) - bbaxis += [bb] - - bbspines = [] - for nn, a in enumerate(['bottom', 'top', 'left', 'right']): - bb = axs.spines[a].get_window_extent(renderer) - if bb: - spiner = plt.Rectangle((bb.x0, bb.y0), width=bb.width, - height=bb.height, linewidth=0.7, - edgecolor="green", facecolor="none", - transform=None, zorder=3) - fig.add_artist(spiner) - bbspines += [bb] - - bb = axs.get_window_extent() - if bb: - rect2 = plt.Rectangle((bb.x0, bb.y0), width=bb.width, height=bb.height, - linewidth=1.5, edgecolor="magenta", - facecolor="none", transform=None, zorder=2) - fig.add_artist(rect2) - bbax = bb - - bb2 = axs.get_tightbbox(renderer) - if bb2: - rect2 = plt.Rectangle((bb2.x0, bb2.y0), width=bb2.width, - height=bb2.height, linewidth=3, edgecolor="red", - facecolor="none", transform=None, zorder=1) - fig.add_artist(rect2) - bbtb = bb2 - return bbaxis, bbspines, bbax, bbtb - - -def test_normal_axes(): - with rc_context({'_internal.classic_mode': False}): - fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) - fig.canvas.draw() - plt.close(fig) - bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) - - # test the axis bboxes - target = [ - [123.375, 75.88888888888886, 983.25, 33.0], - [85.51388888888889, 99.99999999999997, 53.375, 993.0] - ] - for nn, b in enumerate(bbaxis): - targetbb = mtransforms.Bbox.from_bounds(*target[nn]) - assert_array_almost_equal(b.bounds, targetbb.bounds, decimal=2) - - target = [ - [150.0, 119.999, 930.0, 11.111], - [150.0, 1080.0, 930.0, 0.0], - [150.0, 119.9999, 11.111, 960.0], - [1068.8888, 119.9999, 11.111, 960.0] - ] - for nn, b in enumerate(bbspines): - targetbb = mtransforms.Bbox.from_bounds(*target[nn]) - assert_array_almost_equal(b.bounds, targetbb.bounds, decimal=2) - - target = [150.0, 119.99999999999997, 930.0, 960.0] - targetbb = mtransforms.Bbox.from_bounds(*target) - assert_array_almost_equal(bbax.bounds, targetbb.bounds, decimal=2) - - target = [85.5138, 75.88888, 1021.11, 1017.11] - targetbb = mtransforms.Bbox.from_bounds(*target) - assert_array_almost_equal(bbtb.bounds, targetbb.bounds, decimal=2) - - # test that get_position roundtrips to get_window_extent - axbb = ax.get_position().transformed(fig.transFigure).bounds - assert_array_almost_equal(axbb, ax.get_window_extent().bounds, decimal=2) - - -def test_nodecorator(): - with rc_context({'_internal.classic_mode': False}): - fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) - fig.canvas.draw() - ax.set(xticklabels=[], yticklabels=[]) - bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) - - # test the axis bboxes - target = [ - None, - None - ] - for nn, b in enumerate(bbaxis): - assert b is None - - target = [ - [150.0, 119.999, 930.0, 11.111], - [150.0, 1080.0, 930.0, 0.0], - [150.0, 119.9999, 11.111, 960.0], - [1068.8888, 119.9999, 11.111, 960.0] - ] - for nn, b in enumerate(bbspines): - targetbb = mtransforms.Bbox.from_bounds(*target[nn]) - assert_allclose(b.bounds, targetbb.bounds, atol=1e-2) - - target = [150.0, 119.99999999999997, 930.0, 960.0] - targetbb = mtransforms.Bbox.from_bounds(*target) - assert_allclose(bbax.bounds, targetbb.bounds, atol=1e-2) - - target = [150., 120., 930., 960.] - targetbb = mtransforms.Bbox.from_bounds(*target) - assert_allclose(bbtb.bounds, targetbb.bounds, atol=1e-2) - - -def test_displaced_spine(): - with rc_context({'_internal.classic_mode': False}): - fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) - ax.set(xticklabels=[], yticklabels=[]) - ax.spines['bottom'].set_position(('axes', -0.1)) - fig.canvas.draw() - bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) - - target = [ - [150., 24., 930., 11.111111], - [150.0, 1080.0, 930.0, 0.0], - [150.0, 119.9999, 11.111, 960.0], - [1068.8888, 119.9999, 11.111, 960.0] - ] - for nn, b in enumerate(bbspines): - targetbb = mtransforms.Bbox.from_bounds(*target[nn]) - - target = [150.0, 119.99999999999997, 930.0, 960.0] - targetbb = mtransforms.Bbox.from_bounds(*target) - assert_allclose(bbax.bounds, targetbb.bounds, atol=1e-2) - - target = [150., 24., 930., 1056.] - targetbb = mtransforms.Bbox.from_bounds(*target) - assert_allclose(bbtb.bounds, targetbb.bounds, atol=1e-2) - - -def test_tickdirs(): - """ - Switch the tickdirs and make sure the bboxes switch with them - """ - targets = [[[150.0, 120.0, 930.0, 11.1111], - [150.0, 120.0, 11.111, 960.0]], - [[150.0, 108.8889, 930.0, 11.111111111111114], - [138.889, 120, 11.111, 960.0]], - [[150.0, 114.44444444444441, 930.0, 11.111111111111114], - [144.44444444444446, 119.999, 11.111, 960.0]]] - for dnum, dirs in enumerate(['in', 'out', 'inout']): - with rc_context({'_internal.classic_mode': False}): - fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) - ax.tick_params(direction=dirs) - fig.canvas.draw() - bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) - for nn, num in enumerate([0, 2]): - targetbb = mtransforms.Bbox.from_bounds(*targets[dnum][nn]) - assert_allclose(bbspines[num].bounds, targetbb.bounds, - atol=1e-2) - - -def test_minor_accountedfor(): - with rc_context({'_internal.classic_mode': False}): - fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) - fig.canvas.draw() - ax.tick_params(which='both', direction='out') - - bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) - bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) - targets = [[150.0, 108.88888888888886, 930.0, 11.111111111111114], - [138.8889, 119.9999, 11.1111, 960.0]] - for n in range(2): - targetbb = mtransforms.Bbox.from_bounds(*targets[n]) - assert_allclose(bbspines[n * 2].bounds, targetbb.bounds, - atol=1e-2) - - fig, ax = plt.subplots(dpi=200, figsize=(6, 6)) - fig.canvas.draw() - ax.tick_params(which='both', direction='out') - ax.minorticks_on() - ax.tick_params(axis='both', which='minor', length=30) - fig.canvas.draw() - bbaxis, bbspines, bbax, bbtb = color_boxes(fig, ax) - targets = [[150.0, 36.66666666666663, 930.0, 83.33333333333334], - [66.6667, 120.0, 83.3333, 960.0]] - - for n in range(2): - targetbb = mtransforms.Bbox.from_bounds(*targets[n]) - assert_allclose(bbspines[n * 2].bounds, targetbb.bounds, - atol=1e-2)