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

.. only:: html

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

        Click :ref:`here <sphx_glr_download_gallery_statistics_bxp.py>`
        to download the full example code

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

.. _sphx_glr_gallery_statistics_bxp.py:


=======================
Boxplot drawer function
=======================

This example demonstrates how to pass pre-computed box plot
statistics to the box plot drawer. The first figure demonstrates
how to remove and add individual components (note that the
mean is the only value not shown by default). The second
figure demonstrates how the styles of the artists can
be customized.

A good general reference on boxplots and their history can be found
here: http://vita.had.co.nz/papers/boxplots.pdf

.. GENERATED FROM PYTHON SOURCE LINES 16-29

.. code-block:: default


    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.cbook as cbook

    # fake data
    np.random.seed(19680801)
    data = np.random.lognormal(size=(37, 4), mean=1.5, sigma=1.75)
    labels = list('ABCD')

    # compute the boxplot stats
    stats = cbook.boxplot_stats(data, labels=labels, bootstrap=10000)








.. GENERATED FROM PYTHON SOURCE LINES 30-33

After we've computed the stats, we can go through and change anything.
Just to prove it, I'll set the median of each set to the median of all
the data, and double the means

.. GENERATED FROM PYTHON SOURCE LINES 33-42

.. code-block:: default


    for n in range(len(stats)):
        stats[n]['med'] = np.median(data)
        stats[n]['mean'] *= 2

    print(list(stats[0]))

    fs = 10  # fontsize





.. rst-class:: sphx-glr-script-out

 Out:

 .. code-block:: none

    ['label', 'mean', 'iqr', 'cilo', 'cihi', 'whishi', 'whislo', 'fliers', 'q1', 'med', 'q3']




.. GENERATED FROM PYTHON SOURCE LINES 43-44

Demonstrate how to toggle the display of different elements:

.. GENERATED FROM PYTHON SOURCE LINES 44-72

.. code-block:: default


    fig, axs = plt.subplots(nrows=2, ncols=3, figsize=(6, 6), sharey=True)
    axs[0, 0].bxp(stats)
    axs[0, 0].set_title('Default', fontsize=fs)

    axs[0, 1].bxp(stats, showmeans=True)
    axs[0, 1].set_title('showmeans=True', fontsize=fs)

    axs[0, 2].bxp(stats, showmeans=True, meanline=True)
    axs[0, 2].set_title('showmeans=True,\nmeanline=True', fontsize=fs)

    axs[1, 0].bxp(stats, showbox=False, showcaps=False)
    tufte_title = 'Tufte Style\n(showbox=False,\nshowcaps=False)'
    axs[1, 0].set_title(tufte_title, fontsize=fs)

    axs[1, 1].bxp(stats, shownotches=True)
    axs[1, 1].set_title('notch=True', fontsize=fs)

    axs[1, 2].bxp(stats, showfliers=False)
    axs[1, 2].set_title('showfliers=False', fontsize=fs)

    for ax in axs.flat:
        ax.set_yscale('log')
        ax.set_yticklabels([])

    fig.subplots_adjust(hspace=0.4)
    plt.show()




.. image:: /gallery/statistics/images/sphx_glr_bxp_001.png
    :alt: Default, showmeans=True, showmeans=True, meanline=True, Tufte Style (showbox=False, showcaps=False), notch=True, showfliers=False
    :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 73-74

Demonstrate how to customize the display different elements:

.. GENERATED FROM PYTHON SOURCE LINES 74-105

.. code-block:: default


    boxprops = dict(linestyle='--', linewidth=3, color='darkgoldenrod')
    flierprops = dict(marker='o', markerfacecolor='green', markersize=12,
                      linestyle='none')
    medianprops = dict(linestyle='-.', linewidth=2.5, color='firebrick')
    meanpointprops = dict(marker='D', markeredgecolor='black',
                          markerfacecolor='firebrick')
    meanlineprops = dict(linestyle='--', linewidth=2.5, color='purple')

    fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(6, 6), sharey=True)
    axs[0, 0].bxp(stats, boxprops=boxprops)
    axs[0, 0].set_title('Custom boxprops', fontsize=fs)

    axs[0, 1].bxp(stats, flierprops=flierprops, medianprops=medianprops)
    axs[0, 1].set_title('Custom medianprops\nand flierprops', fontsize=fs)

    axs[1, 0].bxp(stats, meanprops=meanpointprops, meanline=False,
                  showmeans=True)
    axs[1, 0].set_title('Custom mean\nas point', fontsize=fs)

    axs[1, 1].bxp(stats, meanprops=meanlineprops, meanline=True,
                  showmeans=True)
    axs[1, 1].set_title('Custom mean\nas line', fontsize=fs)

    for ax in axs.flat:
        ax.set_yscale('log')
        ax.set_yticklabels([])

    fig.suptitle("I never said they'd be pretty")
    fig.subplots_adjust(hspace=0.4)
    plt.show()



.. image:: /gallery/statistics/images/sphx_glr_bxp_002.png
    :alt: I never said they'd be pretty, Custom boxprops, Custom medianprops and flierprops, Custom mean as point, Custom mean as line
    :class: sphx-glr-single-img






.. rst-class:: sphx-glr-timing

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


.. _sphx_glr_download_gallery_statistics_bxp.py:


.. only :: html

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



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

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



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

     :download:`Download Jupyter notebook: bxp.ipynb <bxp.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>`_
