

.. _sphx_glr_gallery_userdemo_annotate_explain.py:


================
Annotate Explain
================





.. image:: /gallery/userdemo/images/sphx_glr_annotate_explain_001.png
    :align: center





.. code-block:: python


    import matplotlib.pyplot as plt
    import matplotlib.patches as mpatches
    from mpl_toolkits.axes_grid1.axes_grid import AxesGrid
    from matplotlib.offsetbox import AnchoredText

    x1, y1 = 0.3, 0.3
    x2, y2 = 0.7, 0.7

    fig = plt.figure(1, figsize=(8, 3))
    fig.clf()


    def add_at(ax, t, loc=2):
        fp = dict(size=10)
        _at = AnchoredText(t, loc=loc, prop=fp)
        ax.add_artist(_at)
        return _at


    grid = AxesGrid(fig, 111, (1, 4), label_mode="1", share_all=True)

    grid[0].set_autoscale_on(False)

    ax = grid[0]
    ax.plot([x1, x2], [y1, y2], ".")
    el = mpatches.Ellipse((x1, y1), 0.3, 0.4, angle=30, alpha=0.2)
    ax.add_artist(el)
    ax.annotate("",
                xy=(x1, y1), xycoords='data',
                xytext=(x2, y2), textcoords='data',
                arrowprops=dict(arrowstyle="-",
                                color="0.5",
                                patchB=None,
                                shrinkB=0,
                                connectionstyle="arc3,rad=0.3",
                                ),
                )

    add_at(ax, "connect", loc=2)

    ax = grid[1]
    ax.plot([x1, x2], [y1, y2], ".")
    el = mpatches.Ellipse((x1, y1), 0.3, 0.4, angle=30, alpha=0.2)
    ax.add_artist(el)
    ax.annotate("",
                xy=(x1, y1), xycoords='data',
                xytext=(x2, y2), textcoords='data',
                arrowprops=dict(arrowstyle="-",
                                color="0.5",
                                patchB=el,
                                shrinkB=0,
                                connectionstyle="arc3,rad=0.3",
                                ),
                )

    add_at(ax, "clip", loc=2)


    ax = grid[2]
    ax.plot([x1, x2], [y1, y2], ".")
    el = mpatches.Ellipse((x1, y1), 0.3, 0.4, angle=30, alpha=0.2)
    ax.add_artist(el)
    ax.annotate("",
                xy=(x1, y1), xycoords='data',
                xytext=(x2, y2), textcoords='data',
                arrowprops=dict(arrowstyle="-",
                                color="0.5",
                                patchB=el,
                                shrinkB=5,
                                connectionstyle="arc3,rad=0.3",
                                ),
                )

    add_at(ax, "shrink", loc=2)


    ax = grid[3]
    ax.plot([x1, x2], [y1, y2], ".")
    el = mpatches.Ellipse((x1, y1), 0.3, 0.4, angle=30, alpha=0.2)
    ax.add_artist(el)
    ax.annotate("",
                xy=(x1, y1), xycoords='data',
                xytext=(x2, y2), textcoords='data',
                arrowprops=dict(arrowstyle="fancy",
                                color="0.5",
                                patchB=el,
                                shrinkB=5,
                                connectionstyle="arc3,rad=0.3",
                                ),
                )

    add_at(ax, "mutate", loc=2)

    grid[0].set_xlim(0, 1)
    grid[0].set_ylim(0, 1)
    grid[0].axis["bottom"].toggle(ticklabels=False)
    grid[0].axis["left"].toggle(ticklabels=False)
    fig.subplots_adjust(left=0.05, right=0.95, bottom=0.05, top=0.95)

    plt.show()

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



.. only :: html

 .. container:: sphx-glr-footer


  .. container:: sphx-glr-download

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



  .. container:: sphx-glr-download

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


.. only:: html

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

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