
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "gallery/images_contours_and_fields/contour_demo.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. meta::
        :keywords: codex

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_gallery_images_contours_and_fields_contour_demo.py>`
        to download the full example code.

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_gallery_images_contours_and_fields_contour_demo.py:


============
Contour Demo
============

Illustrate simple contour plotting, contours on an image with
a colorbar for the contours, and labelled contours.

See also the :doc:`contour image example
</gallery/images_contours_and_fields/contour_image>`.

.. GENERATED FROM PYTHON SOURCE LINES 12-26

.. code-block:: Python


    import matplotlib.pyplot as plt
    import numpy as np

    import matplotlib.cm as cm

    delta = 0.025
    x = np.arange(-3.0, 3.0, delta)
    y = np.arange(-2.0, 2.0, delta)
    X, Y = np.meshgrid(x, y)
    Z1 = np.exp(-X**2 - Y**2)
    Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
    Z = (Z1 - Z2) * 2








.. GENERATED FROM PYTHON SOURCE LINES 27-30

Create a simple contour plot with labels using default colors.  The inline
argument to clabel will control whether the labels are draw over the line
segments of the contour, removing the lines beneath the label.

.. GENERATED FROM PYTHON SOURCE LINES 30-36

.. code-block:: Python


    fig, ax = plt.subplots()
    CS = ax.contour(X, Y, Z)
    ax.clabel(CS, fontsize=10)
    ax.set_title('Simplest default with labels')




.. image-sg:: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_001.png
   :alt: Simplest default with labels
   :srcset: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_001.png, /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_001_2_00x.png 2.00x
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 37-40

Contour labels can be placed manually by providing list of positions (in data
coordinate).  See :doc:`/gallery/event_handling/ginput_manual_clabel_sgskip`
for interactive placement.

.. GENERATED FROM PYTHON SOURCE LINES 40-48

.. code-block:: Python


    fig, ax = plt.subplots()
    CS = ax.contour(X, Y, Z)
    manual_locations = [
        (-1, -1.4), (-0.62, -0.7), (-2, 0.5), (1.7, 1.2), (2.0, 1.4), (2.4, 1.7)]
    ax.clabel(CS, fontsize=10, manual=manual_locations)
    ax.set_title('labels at selected locations')




.. image-sg:: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_002.png
   :alt: labels at selected locations
   :srcset: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_002.png, /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_002_2_00x.png 2.00x
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 49-50

You can force all the contours to be the same color.

.. GENERATED FROM PYTHON SOURCE LINES 50-56

.. code-block:: Python


    fig, ax = plt.subplots()
    CS = ax.contour(X, Y, Z, 6, colors='k')  # Negative contours default to dashed.
    ax.clabel(CS, fontsize=9)
    ax.set_title('Single color - negative contours dashed')




.. image-sg:: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_003.png
   :alt: Single color - negative contours dashed
   :srcset: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_003.png, /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_003_2_00x.png 2.00x
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 57-58

You can set negative contours to be solid instead of dashed:

.. GENERATED FROM PYTHON SOURCE LINES 58-65

.. code-block:: Python


    plt.rcParams['contour.negative_linestyle'] = 'solid'
    fig, ax = plt.subplots()
    CS = ax.contour(X, Y, Z, 6, colors='k')  # Negative contours default to dashed.
    ax.clabel(CS, fontsize=9)
    ax.set_title('Single color - negative contours solid')




.. image-sg:: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_004.png
   :alt: Single color - negative contours solid
   :srcset: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_004.png, /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_004_2_00x.png 2.00x
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 66-67

And you can manually specify the colors of the contour

.. GENERATED FROM PYTHON SOURCE LINES 67-76

.. code-block:: Python


    fig, ax = plt.subplots()
    CS = ax.contour(X, Y, Z, 6,
                    linewidths=np.arange(.5, 4, .5),
                    colors=('r', 'green', 'blue', (1, 1, 0), '#afeeee', '0.5'),
                    )
    ax.clabel(CS, fontsize=9)
    ax.set_title('Crazy lines')




.. image-sg:: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_005.png
   :alt: Crazy lines
   :srcset: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_005.png, /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_005_2_00x.png 2.00x
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 77-79

Or you can use a colormap to specify the colors; the default
colormap will be used for the contour lines

.. GENERATED FROM PYTHON SOURCE LINES 79-112

.. code-block:: Python


    fig, ax = plt.subplots()
    im = ax.imshow(Z, interpolation='bilinear', origin='lower',
                   cmap=cm.gray, extent=(-3, 3, -2, 2))
    levels = np.arange(-1.2, 1.6, 0.2)
    CS = ax.contour(Z, levels, origin='lower', cmap='flag', extend='both',
                    linewidths=2, extent=(-3, 3, -2, 2))

    # Thicken the zero contour.
    lws = np.resize(CS.get_linewidth(), len(levels))
    lws[6] = 4
    CS.set_linewidth(lws)

    ax.clabel(CS, levels[1::2],  # label every second level
              fmt='%1.1f', fontsize=14)

    # make a colorbar for the contour lines
    CB = fig.colorbar(CS, shrink=0.8)

    ax.set_title('Lines with colorbar')

    # We can still add a colorbar for the image, too.
    CBI = fig.colorbar(im, orientation='horizontal', shrink=0.8)

    # This makes the original colorbar look a bit out of place,
    # so let's improve its position.

    l, b, w, h = ax.get_position().bounds
    ll, bb, ww, hh = CB.ax.get_position().bounds
    CB.ax.set_position([ll, b + 0.1*h, ww, h*0.8])

    plt.show()




.. image-sg:: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_006.png
   :alt: Lines with colorbar
   :srcset: /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_006.png, /gallery/images_contours_and_fields/images/sphx_glr_contour_demo_006_2_00x.png 2.00x
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 113-123

.. admonition:: References

   The use of the following functions, methods, classes and modules is shown
   in this example:

   - `matplotlib.axes.Axes.contour` / `matplotlib.pyplot.contour`
   - `matplotlib.figure.Figure.colorbar` / `matplotlib.pyplot.colorbar`
   - `matplotlib.axes.Axes.clabel` / `matplotlib.pyplot.clabel`
   - `matplotlib.axes.Axes.get_position`
   - `matplotlib.axes.Axes.set_position`


.. _sphx_glr_download_gallery_images_contours_and_fields_contour_demo.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

    .. container:: sphx-glr-download sphx-glr-download-jupyter

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

    .. container:: sphx-glr-download sphx-glr-download-python

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

    .. container:: sphx-glr-download sphx-glr-download-zip

      :download:`Download zipped: contour_demo.zip <contour_demo.zip>`


.. only:: html

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

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