.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "gallery/text_labels_and_annotations/demo_text_rotation_mode.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. meta:: :keywords: codex .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_text_labels_and_annotations_demo_text_rotation_mode.py: ================== Text Rotation Mode ================== This example illustrates the effect of ``rotation_mode`` on the positioning of rotated text. Rotated `.Text`\s are created by passing the parameter ``rotation`` to the constructor or the axes' method `~.axes.Axes.text`. The actual positioning depends on the additional parameters ``horizontalalignment``, ``verticalalignment`` and ``rotation_mode``. ``rotation_mode`` determines the order of rotation and alignment: - ``rotation_mode='default'`` (or None) first rotates the text and then aligns the bounding box of the rotated text. - ``rotation_mode='anchor'`` aligns the unrotated text and then rotates the text around the point of alignment. .. redirect-from:: /gallery/text_labels_and_annotations/text_rotation .. GENERATED FROM PYTHON SOURCE LINES 23-81 .. code-block:: Python import matplotlib.pyplot as plt def test_rotation_mode(fig, mode): ha_list = ["left", "center", "right"] va_list = ["top", "center", "baseline", "bottom"] axs = fig.subplots(len(va_list), len(ha_list), sharex=True, sharey=True, subplot_kw=dict(aspect=1), gridspec_kw=dict(hspace=0, wspace=0)) # labels and title 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") kw = ( {} if mode == "default" else {"bbox": dict(boxstyle="square,pad=0.", ec="none", fc="C1", alpha=0.3)} ) texts = {} # use a different text alignment in each axes 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) texts[ax] = tx if mode == "default": # highlight bbox fig.canvas.draw() for ax, text in texts.items(): 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, 5)) subfigs = fig.subfigures(1, 2) test_rotation_mode(subfigs[0], "default") test_rotation_mode(subfigs[1], "anchor") plt.show() .. image-sg:: /gallery/text_labels_and_annotations/images/sphx_glr_demo_text_rotation_mode_001.png :alt: rotation_mode='default', rotation_mode='anchor' :srcset: /gallery/text_labels_and_annotations/images/sphx_glr_demo_text_rotation_mode_001.png, /gallery/text_labels_and_annotations/images/sphx_glr_demo_text_rotation_mode_001_2_00x.png 2.00x :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 82-88 .. admonition:: References The use of the following functions, methods, classes and modules is shown in this example: - `matplotlib.axes.Axes.text` / `matplotlib.pyplot.text` .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 1.031 seconds) .. _sphx_glr_download_gallery_text_labels_and_annotations_demo_text_rotation_mode.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: demo_text_rotation_mode.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: demo_text_rotation_mode.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_