

.. _sphx_glr_gallery_text_labels_and_annotations_text_alignment.py:


===================
Precise text layout
===================

You can precisely layout text in data or axes (0,1) coordinates.  This
example shows you some of the alignment and rotation specifications for text
layout.




.. image:: /gallery/text_labels_and_annotations/images/sphx_glr_text_alignment_001.png
    :align: center





.. code-block:: python


    import matplotlib.pyplot as plt
    from matplotlib.lines import Line2D
    from matplotlib.patches import Rectangle

    # Build a rectangle in axes coords
    left, width = .25, .5
    bottom, height = .25, .5
    right = left + width
    top = bottom + height
    ax = plt.gca()
    p = plt.Rectangle((left, bottom), width, height, fill=False)
    p.set_transform(ax.transAxes)
    p.set_clip_on(False)
    ax.add_patch(p)


    ax.text(left, bottom, 'left top',
            horizontalalignment='left',
            verticalalignment='top',
            transform=ax.transAxes)

    ax.text(left, bottom, 'left bottom',
            horizontalalignment='left',
            verticalalignment='bottom',
            transform=ax.transAxes)

    ax.text(right, top, 'right bottom',
            horizontalalignment='right',
            verticalalignment='bottom',
            transform=ax.transAxes)

    ax.text(right, top, 'right top',
            horizontalalignment='right',
            verticalalignment='top',
            transform=ax.transAxes)

    ax.text(right, bottom, 'center top',
            horizontalalignment='center',
            verticalalignment='top',
            transform=ax.transAxes)

    ax.text(left, 0.5 * (bottom + top), 'right center',
            horizontalalignment='right',
            verticalalignment='center',
            rotation='vertical',
            transform=ax.transAxes)

    ax.text(left, 0.5 * (bottom + top), 'left center',
            horizontalalignment='left',
            verticalalignment='center',
            rotation='vertical',
            transform=ax.transAxes)

    ax.text(0.5 * (left + right), 0.5 * (bottom + top), 'middle',
            horizontalalignment='center',
            verticalalignment='center',
            transform=ax.transAxes)

    ax.text(right, 0.5 * (bottom + top), 'centered',
            horizontalalignment='center',
            verticalalignment='center',
            rotation='vertical',
            transform=ax.transAxes)

    ax.text(left, top, 'rotated\nwith newlines',
            horizontalalignment='center',
            verticalalignment='center',
            rotation=45,
            transform=ax.transAxes)

    plt.axis('off')

    plt.show()

**Total running time of the script:** ( 0 minutes  0.025 seconds)



.. container:: sphx-glr-footer


  .. container:: sphx-glr-download

     :download:`Download Python source code: text_alignment.py <text_alignment.py>`



  .. container:: sphx-glr-download

     :download:`Download Jupyter notebook: text_alignment.ipynb <text_alignment.ipynb>`

.. rst-class:: sphx-glr-signature

    `Generated by Sphinx-Gallery <https://sphinx-gallery.readthedocs.io>`_
