diff --git a/examples/userdemo/demo_gridspec06.py b/examples/userdemo/demo_gridspec06.py index 7bf7886ab0bd..507c497b4486 100644 --- a/examples/userdemo/demo_gridspec06.py +++ b/examples/userdemo/demo_gridspec06.py @@ -7,9 +7,7 @@ """ import matplotlib.pyplot as plt -import matplotlib.gridspec as gridspec import numpy as np -from itertools import product def squiggle_xy(a, b, c, d): @@ -18,35 +16,23 @@ def squiggle_xy(a, b, c, d): fig = plt.figure(figsize=(8, 8)) - -# gridspec inside gridspec -outer_grid = gridspec.GridSpec(4, 4, wspace=0.0, hspace=0.0) - -for i in range(16): - inner_grid = gridspec.GridSpecFromSubplotSpec( - 3, 3, subplot_spec=outer_grid[i], wspace=0.0, hspace=0.0) - a = i // 4 + 1 - b = i % 4 + 1 - for j, (c, d) in enumerate(product(range(1, 4), repeat=2)): - ax = fig.add_subplot(inner_grid[j]) - ax.plot(*squiggle_xy(a, b, c, d)) - ax.set_xticks([]) - ax.set_yticks([]) - fig.add_subplot(ax) - -all_axes = fig.get_axes() +outer_grid = fig.add_gridspec(4, 4, wspace=0, hspace=0) + +for a in range(4): + for b in range(4): + # gridspec inside gridspec + inner_grid = outer_grid[a, b].subgridspec(3, 3, wspace=0, hspace=0) + for c in range(3): + for d in range(3): + ax = fig.add_subplot(inner_grid[c, d]) + ax.plot(*squiggle_xy(a + 1, b + 1, c + 1, d + 1)) + ax.set(xticks=[], yticks=[]) # show only the outside spines -for ax in all_axes: - for sp in ax.spines.values(): - sp.set_visible(False) - if ax.is_first_row(): - ax.spines['top'].set_visible(True) - if ax.is_last_row(): - ax.spines['bottom'].set_visible(True) - if ax.is_first_col(): - ax.spines['left'].set_visible(True) - if ax.is_last_col(): - ax.spines['right'].set_visible(True) +for ax in fig.get_axes(): + ax.spines['top'].set_visible(ax.is_first_row()) + ax.spines['bottom'].set_visible(ax.is_last_row()) + ax.spines['left'].set_visible(ax.is_first_col()) + ax.spines['right'].set_visible(ax.is_last_col()) plt.show() diff --git a/tutorials/intermediate/gridspec.py b/tutorials/intermediate/gridspec.py index e1b007a10020..8da66d3eed7a 100644 --- a/tutorials/intermediate/gridspec.py +++ b/tutorials/intermediate/gridspec.py @@ -226,7 +226,6 @@ # spines in each of the inner 3x3 grids. import numpy as np -from itertools import product def squiggle_xy(a, b, c, d, i=np.arange(0.0, 2*np.pi, 0.05)): @@ -234,34 +233,24 @@ def squiggle_xy(a, b, c, d, i=np.arange(0.0, 2*np.pi, 0.05)): fig11 = plt.figure(figsize=(8, 8), constrained_layout=False) - -# gridspec inside gridspec -outer_grid = fig11.add_gridspec(4, 4, wspace=0.0, hspace=0.0) - -for i in range(16): - inner_grid = outer_grid[i].subgridspec(3, 3, wspace=0.0, hspace=0.0) - a, b = int(i/4)+1, i % 4+1 - for j, (c, d) in enumerate(product(range(1, 4), repeat=2)): - ax = fig11.add_subplot(inner_grid[j]) - ax.plot(*squiggle_xy(a, b, c, d)) - ax.set_xticks([]) - ax.set_yticks([]) - fig11.add_subplot(ax) - -all_axes = fig11.get_axes() +outer_grid = fig11.add_gridspec(4, 4, wspace=0, hspace=0) + +for a in range(4): + for b in range(4): + # gridspec inside gridspec + inner_grid = outer_grid[a, b].subgridspec(3, 3, wspace=0, hspace=0) + for c in range(3): + for d in range(3): + ax = fig11.add_subplot(inner_grid[c, d]) + ax.plot(*squiggle_xy(a + 1, b + 1, c + 1, d + 1)) + ax.set(xticks=[], yticks=[]) # show only the outside spines -for ax in all_axes: - for sp in ax.spines.values(): - sp.set_visible(False) - if ax.is_first_row(): - ax.spines['top'].set_visible(True) - if ax.is_last_row(): - ax.spines['bottom'].set_visible(True) - if ax.is_first_col(): - ax.spines['left'].set_visible(True) - if ax.is_last_col(): - ax.spines['right'].set_visible(True) +for ax in fig11.get_axes(): + ax.spines['top'].set_visible(ax.is_first_row()) + ax.spines['bottom'].set_visible(ax.is_last_row()) + ax.spines['left'].set_visible(ax.is_first_col()) + ax.spines['right'].set_visible(ax.is_last_col()) plt.show()