

.. _sphx_glr_gallery_units_artist_tests.py:


============
Artist tests
============

Test unit support with each of the Matplotlib primitive artist types.

The axis handles unit conversions and the artists keep a pointer to their axis
parent. You must initialize the artists with the axis instance if you want to
use them with unit data, or else they will not know how to convert the units
to scalars.

.. only:: builder_html

   This example requires :download:`basic_units.py <basic_units.py>`




.. image:: /gallery/units/images/sphx_glr_artist_tests_001.png
    :align: center





.. code-block:: python

    import random
    import matplotlib.lines as lines
    import matplotlib.patches as patches
    import matplotlib.text as text
    import matplotlib.collections as collections

    from basic_units import cm, inch
    import numpy as np
    import matplotlib.pyplot as plt

    fig, ax = plt.subplots()
    ax.xaxis.set_units(cm)
    ax.yaxis.set_units(cm)

    # Fixing random state for reproducibility
    np.random.seed(19680801)

    if 0:
        # test a line collection
        # Not supported at present.
        verts = []
        for i in range(10):
            # a random line segment in inches
            verts.append(zip(*inch*10*np.random.rand(2, random.randint(2, 15))))
        lc = collections.LineCollection(verts, axes=ax)
        ax.add_collection(lc)

    # test a plain-ol-line
    line = lines.Line2D([0*cm, 1.5*cm], [0*cm, 2.5*cm],
                        lw=2, color='black', axes=ax)
    ax.add_line(line)

    if 0:
        # test a patch
        # Not supported at present.
        rect = patches.Rectangle((1*cm, 1*cm), width=5*cm, height=2*cm,
                                 alpha=0.2, axes=ax)
        ax.add_patch(rect)


    t = text.Text(3*cm, 2.5*cm, 'text label', ha='left', va='bottom', axes=ax)
    ax.add_artist(t)

    ax.set_xlim(-1*cm, 10*cm)
    ax.set_ylim(-1*cm, 10*cm)
    # ax.xaxis.set_units(inch)
    ax.grid(True)
    ax.set_title("Artists with units")
    plt.show()

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



.. only :: html

 .. container:: sphx-glr-footer


  .. container:: sphx-glr-download

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



  .. container:: sphx-glr-download

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


.. only:: html

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

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