From f57a3c2475cab332afb0bbd074533d1d247ebb9d Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Tue, 17 Sep 2019 17:35:03 +0200 Subject: [PATCH] Don't use ImageGrid in demo_text_rotation_mode. The example can be written without involving axes_grid. --- .../demo_text_rotation_mode.py | 77 ++++++++++--------- 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/examples/text_labels_and_annotations/demo_text_rotation_mode.py b/examples/text_labels_and_annotations/demo_text_rotation_mode.py index ded20e8abe8d..834e92519134 100644 --- a/examples/text_labels_and_annotations/demo_text_rotation_mode.py +++ b/examples/text_labels_and_annotations/demo_text_rotation_mode.py @@ -17,62 +17,69 @@ the bounding box of the rotated text. - ``rotation_mode='anchor'`` aligns the unrotated text and then rotates the text around the point of alignment. - """ + import matplotlib.pyplot as plt -from mpl_toolkits.axes_grid1.axes_grid import ImageGrid +import numpy as np def test_rotation_mode(fig, mode, subplot_location): ha_list = ["left", "center", "right"] va_list = ["top", "center", "baseline", "bottom"] - grid = ImageGrid(fig, subplot_location, - nrows_ncols=(len(va_list), len(ha_list)), - share_all=True, aspect=True, cbar_mode=None) + axs = np.empty((len(va_list), len(ha_list)), object) + gs = subplot_location.subgridspec(*axs.shape, hspace=0, wspace=0) + axs[0, 0] = fig.add_subplot(gs[0, 0]) + for i in range(len(va_list)): + for j in range(len(ha_list)): + if (i, j) == (0, 0): + continue # Already set. + axs[i, j] = fig.add_subplot( + gs[i, j], sharex=axs[0, 0], sharey=axs[0, 0]) + for ax in axs.flat: + ax.set(aspect=1) # labels and title - for ha, ax in zip(ha_list, grid.axes_row[-1]): - ax.axis["bottom"].label.set_text(ha) - for va, ax in zip(va_list, grid.axes_column[0]): - ax.axis["left"].label.set_text(va) - grid.axes_row[0][1].set_title(f"rotation_mode='{mode}'", size="large") + for ha, ax in zip(ha_list, axs[-1, :]): + ax.set_xlabel(ha) + for va, ax in zip(va_list, axs[:, 0]): + ax.set_ylabel(va) + axs[0, 1].set_title(f"rotation_mode='{mode}'", size="large") - if mode == "default": - kw = dict() - else: - kw = dict( - bbox=dict(boxstyle="square,pad=0.", ec="none", fc="C1", alpha=0.3)) + kw = ( + {} if mode == "default" else + {"bbox": dict(boxstyle="square,pad=0.", ec="none", fc="C1", alpha=0.3)} + ) # use a different text alignment in each axes - texts = [] - for (va, ha), ax in zip([(x, y) for x in va_list for y in ha_list], grid): - # prepare axes layout - for axis in ax.axis.values(): - axis.toggle(ticks=False, ticklabels=False) - ax.axvline(0.5, color="skyblue", zorder=0) - ax.axhline(0.5, color="skyblue", zorder=0) - ax.plot(0.5, 0.5, color="C0", marker="o", zorder=1) - - # add text with rotation and alignment settings - tx = ax.text(0.5, 0.5, "Tpg", - size="x-large", rotation=40, - horizontalalignment=ha, verticalalignment=va, - rotation_mode=mode, **kw) - texts.append(tx) + for i, va in enumerate(va_list): + for j, ha in enumerate(ha_list): + ax = axs[i, j] + # prepare axes layout + ax.set(xticks=[], yticks=[]) + ax.axvline(0.5, color="skyblue", zorder=0) + ax.axhline(0.5, color="skyblue", zorder=0) + ax.plot(0.5, 0.5, color="C0", marker="o", zorder=1) + # add text with rotation and alignment settings + tx = ax.text(0.5, 0.5, "Tpg", + size="x-large", rotation=40, + horizontalalignment=ha, verticalalignment=va, + rotation_mode=mode, **kw) if mode == "default": # highlight bbox fig.canvas.draw() - for ax, tx in zip(grid, texts): - bb = tx.get_window_extent().transformed(ax.transData.inverted()) + for ax in axs.flat: + text, = ax.texts + bb = text.get_window_extent().transformed(ax.transData.inverted()) rect = plt.Rectangle((bb.x0, bb.y0), bb.width, bb.height, facecolor="C1", alpha=0.3, zorder=2) ax.add_patch(rect) -fig = plt.figure(figsize=(8, 6)) -test_rotation_mode(fig, "default", 121) -test_rotation_mode(fig, "anchor", 122) +fig = plt.figure(figsize=(8, 5)) +gs = fig.add_gridspec(1, 2) +test_rotation_mode(fig, "default", gs[0]) +test_rotation_mode(fig, "anchor", gs[1]) plt.show() 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