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

    Click :ref:`here <sphx_glr_download_gallery_shapes_and_collections_line_collection.py>` to download the full example code
.. rst-class:: sphx-glr-example-title

.. _sphx_glr_gallery_shapes_and_collections_line_collection.py:


===============
Line Collection
===============

Plotting lines with Matplotlib.

:class:`~matplotlib.collections.LineCollection` allows one to plot multiple
lines on a figure. Below we show off some of its properties.



.. code-block:: python

    import matplotlib.pyplot as plt
    from matplotlib.collections import LineCollection
    from matplotlib import colors as mcolors

    import numpy as np

    # In order to efficiently plot many lines in a single set of axes,
    # Matplotlib has the ability to add the lines all at once. Here is a
    # simple example showing how it is done.

    x = np.arange(100)
    # Here are many sets of y to plot vs x
    ys = x[:50, np.newaxis] + x[np.newaxis, :]

    segs = np.zeros((50, 100, 2), float)
    segs[:, :, 1] = ys
    segs[:, :, 0] = x

    # Mask some values to test masked array support:
    segs = np.ma.masked_where((segs > 50) & (segs < 60), segs)

    # We need to set the plot limits.
    fig, ax = plt.subplots()
    ax.set_xlim(x.min(), x.max())
    ax.set_ylim(ys.min(), ys.max())

    # colors is sequence of rgba tuples
    # linestyle is a string or dash tuple. Legal string values are
    #          solid|dashed|dashdot|dotted.  The dash tuple is (offset, onoffseq)
    #          where onoffseq is an even length tuple of on and off ink in points.
    #          If linestyle is omitted, 'solid' is used
    # See :class:`matplotlib.collections.LineCollection` for more information
    colors = [mcolors.to_rgba(c)
              for c in plt.rcParams['axes.prop_cycle'].by_key()['color']]

    line_segments = LineCollection(segs, linewidths=(0.5, 1, 1.5, 2),
                                   colors=colors, linestyle='solid')
    ax.add_collection(line_segments)
    ax.set_title('Line collection with masked arrays')
    plt.show()




.. image:: /gallery/shapes_and_collections/images/sphx_glr_line_collection_001.png
    :class: sphx-glr-single-img




In order to efficiently plot many lines in a single set of axes,
Matplotlib has the ability to add the lines all at once. Here is a
simple example showing how it is done.



.. code-block:: python


    N = 50
    x = np.arange(N)
    # Here are many sets of y to plot vs x
    ys = [x + i for i in x]

    # We need to set the plot limits, they will not autoscale
    fig, ax = plt.subplots()
    ax.set_xlim(np.min(x), np.max(x))
    ax.set_ylim(np.min(ys), np.max(ys))

    # colors is sequence of rgba tuples
    # linestyle is a string or dash tuple. Legal string values are
    #          solid|dashed|dashdot|dotted.  The dash tuple is (offset, onoffseq)
    #          where onoffseq is an even length tuple of on and off ink in points.
    #          If linestyle is omitted, 'solid' is used
    # See :class:`matplotlib.collections.LineCollection` for more information

    # Make a sequence of x,y pairs
    line_segments = LineCollection([np.column_stack([x, y]) for y in ys],
                                   linewidths=(0.5, 1, 1.5, 2),
                                   linestyles='solid')
    line_segments.set_array(x)
    ax.add_collection(line_segments)
    axcb = fig.colorbar(line_segments)
    axcb.set_label('Line Number')
    ax.set_title('Line Collection with mapped colors')
    plt.sci(line_segments)  # This allows interactive changing of the colormap.
    plt.show()




.. image:: /gallery/shapes_and_collections/images/sphx_glr_line_collection_002.png
    :class: sphx-glr-single-img




------------

References
""""""""""

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



.. code-block:: python


    import matplotlib
    matplotlib.collections
    matplotlib.collections.LineCollection
    matplotlib.cm.ScalarMappable.set_array
    matplotlib.axes.Axes.add_collection
    matplotlib.figure.Figure.colorbar
    matplotlib.pyplot.colorbar
    matplotlib.pyplot.sci







.. _sphx_glr_download_gallery_shapes_and_collections_line_collection.py:


.. only :: html

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



  .. container:: sphx-glr-download

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



  .. container:: sphx-glr-download

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


.. only:: html

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

    Keywords: matplotlib code example, codex, python plot, pyplot
    `Gallery generated by Sphinx-Gallery
    <https://sphinx-gallery.readthedocs.io>`_
