.. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_text_labels_and_annotations_text_rotation_relative_to_line.py: ============================== Text Rotation Relative To Line ============================== Text objects in matplotlib are normally rotated with respect to the screen coordinate system (i.e., 45 degrees rotation plots text along a line that is in between horizontal and vertical no matter how the axes are changed). However, at times one wants to rotate text with respect to something on the plot. In this case, the correct angle won't be the angle of that object in the plot coordinate system, but the angle that that object APPEARS in the screen coordinate system. This angle is found by transforming the angle from the plot to the screen coordinate system, as shown in the example below. .. image:: /gallery/text_labels_and_annotations/images/sphx_glr_text_rotation_relative_to_line_001.png :alt: text rotation relative to line :class: sphx-glr-single-img .. code-block:: default import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots() # Plot diagonal line (45 degrees) h = ax.plot(range(0, 10), range(0, 10)) # set limits so that it no longer looks on screen to be 45 degrees ax.set_xlim([-10, 20]) # Locations to plot text l1 = np.array((1, 1)) l2 = np.array((5, 5)) # Rotate angle angle = 45 trans_angle = ax.transData.transform_angles([45], l2.reshape((1, 2)))[0] # Plot text th1 = ax.text(*l1, 'text not rotated correctly', fontsize=16, rotation=angle, rotation_mode='anchor') th2 = ax.text(*l2, 'text rotated correctly', fontsize=16, rotation=trans_angle, rotation_mode='anchor') plt.show() .. _sphx_glr_download_gallery_text_labels_and_annotations_text_rotation_relative_to_line.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: text_rotation_relative_to_line.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: text_rotation_relative_to_line.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature Keywords: matplotlib code example, codex, python plot, pyplot `Gallery generated by Sphinx-Gallery `_