.. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_lines_bars_and_markers_markevery_demo.py: ============== Markevery Demo ============== This example demonstrates the various options for showing a marker at a subset of data points using the ``markevery`` property of a Line2D object. Integer arguments are fairly intuitive. e.g. ``markevery=5`` will plot every 5th marker starting from the first data point. Float arguments allow markers to be spaced at approximately equal distances along the line. The theoretical distance along the line between markers is determined by multiplying the display-coordinate distance of the axes bounding-box diagonal by the value of ``markevery``. The data points closest to the theoretical distances will be shown. A slice or list/array can also be used with ``markevery`` to specify the markers to show. .. code-block:: default from __future__ import division import numpy as np import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec # define a list of markevery cases to plot cases = [None, 8, (30, 8), [16, 24, 30], [0, -1], slice(100, 200, 3), 0.1, 0.3, 1.5, (0.0, 0.1), (0.45, 0.1)] # define the figure size and grid layout properties figsize = (10, 8) cols = 3 gs = gridspec.GridSpec(len(cases) // cols + 1, cols) gs.update(hspace=0.4) # define the data for cartesian plots delta = 0.11 x = np.linspace(0, 10 - 2 * delta, 200) + delta y = np.sin(x) + 1.0 + delta Plot each markevery case for linear x and y scales .. code-block:: default fig1 = plt.figure(num=1, figsize=figsize) ax = [] for i, case in enumerate(cases): row = (i // cols) col = i % cols ax.append(fig1.add_subplot(gs[row, col])) ax[-1].set_title('markevery=%s' % str(case)) ax[-1].plot(x, y, 'o', ls='-', ms=4, markevery=case) .. image:: /gallery/lines_bars_and_markers/images/sphx_glr_markevery_demo_001.png :class: sphx-glr-single-img Plot each markevery case for log x and y scales .. code-block:: default fig2 = plt.figure(num=2, figsize=figsize) axlog = [] for i, case in enumerate(cases): row = (i // cols) col = i % cols axlog.append(fig2.add_subplot(gs[row, col])) axlog[-1].set_title('markevery=%s' % str(case)) axlog[-1].set_xscale('log') axlog[-1].set_yscale('log') axlog[-1].plot(x, y, 'o', ls='-', ms=4, markevery=case) fig2.tight_layout() .. image:: /gallery/lines_bars_and_markers/images/sphx_glr_markevery_demo_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none /home/tcaswell/.virtualenvs/mpl225/lib/python3.8/site-packages/matplotlib/figure.py:2299: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect. warnings.warn("This figure includes Axes that are not compatible " Plot each markevery case for linear x and y scales but zoomed in note the behaviour when zoomed in. When a start marker offset is specified it is always interpreted with respect to the first data point which might be different to the first visible data point. .. code-block:: default fig3 = plt.figure(num=3, figsize=figsize) axzoom = [] for i, case in enumerate(cases): row = (i // cols) col = i % cols axzoom.append(fig3.add_subplot(gs[row, col])) axzoom[-1].set_title('markevery=%s' % str(case)) axzoom[-1].plot(x, y, 'o', ls='-', ms=4, markevery=case) axzoom[-1].set_xlim((6, 6.7)) axzoom[-1].set_ylim((1.1, 1.7)) fig3.tight_layout() # define data for polar plots r = np.linspace(0, 3.0, 200) theta = 2 * np.pi * r .. image:: /gallery/lines_bars_and_markers/images/sphx_glr_markevery_demo_003.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none /home/tcaswell/.virtualenvs/mpl225/lib/python3.8/site-packages/matplotlib/figure.py:2299: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect. warnings.warn("This figure includes Axes that are not compatible " Plot each markevery case for polar plots .. code-block:: default fig4 = plt.figure(num=4, figsize=figsize) axpolar = [] for i, case in enumerate(cases): row = (i // cols) col = i % cols axpolar.append(fig4.add_subplot(gs[row, col], projection='polar')) axpolar[-1].set_title('markevery=%s' % str(case)) axpolar[-1].plot(theta, r, 'o', ls='-', ms=4, markevery=case) fig4.tight_layout() plt.show() .. image:: /gallery/lines_bars_and_markers/images/sphx_glr_markevery_demo_004.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none /home/tcaswell/.virtualenvs/mpl225/lib/python3.8/site-packages/matplotlib/figure.py:2299: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect. warnings.warn("This figure includes Axes that are not compatible " .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 1.886 seconds) .. _sphx_glr_download_gallery_lines_bars_and_markers_markevery_demo.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download :download:`Download Python source code: markevery_demo.py ` .. container:: sphx-glr-download :download:`Download Jupyter notebook: markevery_demo.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature Keywords: matplotlib code example, codex, python plot, pyplot `Gallery generated by Sphinx-Gallery `_