.. only:: html .. 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_statistics_boxplot.py: ================================= Artist customization in box plots ================================= This example demonstrates how to use the various kwargs to fully customize box plots. 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. It also demonstrates how to set the limit of the whiskers to specific percentiles (lower right axes) A good general reference on boxplots and their history can be found here: http://vita.had.co.nz/papers/boxplots.pdf .. code-block:: default import numpy as np import matplotlib.pyplot as plt # fake data np.random.seed(19680801) data = np.random.lognormal(size=(37, 4), mean=1.5, sigma=1.75) labels = list('ABCD') fs = 10 # fontsize Demonstrate how to toggle the display of different elements: .. code-block:: default fig, axs = plt.subplots(nrows=2, ncols=3, figsize=(6, 6), sharey=True) axs[0, 0].boxplot(data, labels=labels) axs[0, 0].set_title('Default', fontsize=fs) axs[0, 1].boxplot(data, labels=labels, showmeans=True) axs[0, 1].set_title('showmeans=True', fontsize=fs) axs[0, 2].boxplot(data, labels=labels, showmeans=True, meanline=True) axs[0, 2].set_title('showmeans=True,\nmeanline=True', fontsize=fs) axs[1, 0].boxplot(data, labels=labels, 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].boxplot(data, labels=labels, notch=True, bootstrap=10000) axs[1, 1].set_title('notch=True,\nbootstrap=10000', fontsize=fs) axs[1, 2].boxplot(data, labels=labels, 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_boxplot_001.png :alt: Default, showmeans=True, showmeans=True, meanline=True, Tufte Style (showbox=False, showcaps=False), notch=True, bootstrap=10000, showfliers=False :class: sphx-glr-single-img Demonstrate how to customize the display different elements: .. code-block:: default boxprops = dict(linestyle='--', linewidth=3, color='darkgoldenrod') flierprops = dict(marker='o', markerfacecolor='green', markersize=12, markeredgecolor='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=3, figsize=(6, 6), sharey=True) axs[0, 0].boxplot(data, boxprops=boxprops) axs[0, 0].set_title('Custom boxprops', fontsize=fs) axs[0, 1].boxplot(data, flierprops=flierprops, medianprops=medianprops) axs[0, 1].set_title('Custom medianprops\nand flierprops', fontsize=fs) axs[0, 2].boxplot(data, whis=(0, 100)) axs[0, 2].set_title('whis=(0, 100)', fontsize=fs) axs[1, 0].boxplot(data, meanprops=meanpointprops, meanline=False, showmeans=True) axs[1, 0].set_title('Custom mean\nas point', fontsize=fs) axs[1, 1].boxplot(data, meanprops=meanlineprops, meanline=True, showmeans=True) axs[1, 1].set_title('Custom mean\nas line', fontsize=fs) axs[1, 2].boxplot(data, whis=[15, 85]) axs[1, 2].set_title('whis=[15, 85]\n#percentiles', 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_boxplot_002.png :alt: I never said they'd be pretty, Custom boxprops, Custom medianprops and flierprops, whis=(0, 100), Custom mean as point, Custom mean as line, whis=[15, 85] #percentiles :class: sphx-glr-single-img ------------ References """""""""" The use of the following functions and methods is shown in this example: .. code-block:: default import matplotlib matplotlib.axes.Axes.boxplot matplotlib.pyplot.boxplot .. rst-class:: sphx-glr-script-out Out: .. code-block:: none .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 2.230 seconds) .. _sphx_glr_download_gallery_statistics_boxplot.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: boxplot.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: boxplot.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature Keywords: matplotlib code example, codex, python plot, pyplot `Gallery generated by Sphinx-Gallery `_