Boxplot Demo

Example boxplot code

import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)

# fake up some data
spread = np.random.rand(50) * 100
center = np.ones(25) * 50
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
data = np.concatenate((spread, center, flier_high, flier_low))
Copy to clipboard
fig1, ax1 = plt.subplots()
ax1.set_title('Basic Plot')
ax1.boxplot(data)
Copy to clipboard
Basic Plot

Out:

{'whiskers': [<matplotlib.lines.Line2D object at 0x7f73b6e3f250>, <matplotlib.lines.Line2D object at 0x7f73b7859580>], 'caps': [<matplotlib.lines.Line2D object at 0x7f73b7859790>, <matplotlib.lines.Line2D object at 0x7f73b7859be0>], 'boxes': [<matplotlib.lines.Line2D object at 0x7f73b6e3fa60>], 'medians': [<matplotlib.lines.Line2D object at 0x7f73b7859ca0>], 'fliers': [<matplotlib.lines.Line2D object at 0x7f73b6e2d760>], 'means': []}
Copy to clipboard
fig2, ax2 = plt.subplots()
ax2.set_title('Notched boxes')
ax2.boxplot(data, notch=True)
Copy to clipboard
Notched boxes

Out:

{'whiskers': [<matplotlib.lines.Line2D object at 0x7f73b77fc550>, <matplotlib.lines.Line2D object at 0x7f73b7ce0fa0>], 'caps': [<matplotlib.lines.Line2D object at 0x7f73b7ce0c40>, <matplotlib.lines.Line2D object at 0x7f73b7ce0940>], 'boxes': [<matplotlib.lines.Line2D object at 0x7f73b77fc400>], 'medians': [<matplotlib.lines.Line2D object at 0x7f73b7ce0cd0>], 'fliers': [<matplotlib.lines.Line2D object at 0x7f73b7ce02e0>], 'means': []}
Copy to clipboard
green_diamond = dict(markerfacecolor='g', marker='D')
fig3, ax3 = plt.subplots()
ax3.set_title('Changed Outlier Symbols')
ax3.boxplot(data, flierprops=green_diamond)
Copy to clipboard
Changed Outlier Symbols

Out:

{'whiskers': [<matplotlib.lines.Line2D object at 0x7f73b750d700>, <matplotlib.lines.Line2D object at 0x7f73b6bad0a0>], 'caps': [<matplotlib.lines.Line2D object at 0x7f73b6badf70>, <matplotlib.lines.Line2D object at 0x7f73b6bad640>], 'boxes': [<matplotlib.lines.Line2D object at 0x7f73b750d8b0>], 'medians': [<matplotlib.lines.Line2D object at 0x7f73b780dc70>], 'fliers': [<matplotlib.lines.Line2D object at 0x7f73b7bd1760>], 'means': []}
Copy to clipboard
fig4, ax4 = plt.subplots()
ax4.set_title('Hide Outlier Points')
ax4.boxplot(data, showfliers=False)
Copy to clipboard
Hide Outlier Points

Out:

{'whiskers': [<matplotlib.lines.Line2D object at 0x7f73b6ca22e0>, <matplotlib.lines.Line2D object at 0x7f73b6ca26d0>], 'caps': [<matplotlib.lines.Line2D object at 0x7f73b6bbc370>, <matplotlib.lines.Line2D object at 0x7f73b6bbce50>], 'boxes': [<matplotlib.lines.Line2D object at 0x7f73b6f77df0>], 'medians': [<matplotlib.lines.Line2D object at 0x7f73b6bbcdf0>], 'fliers': [], 'means': []}
Copy to clipboard
red_square = dict(markerfacecolor='r', marker='s')
fig5, ax5 = plt.subplots()
ax5.set_title('Horizontal Boxes')
ax5.boxplot(data, vert=False, flierprops=red_square)
Copy to clipboard
Horizontal Boxes

Out:

{'whiskers': [<matplotlib.lines.Line2D object at 0x7f73b6bf4070>, <matplotlib.lines.Line2D object at 0x7f73b6bf43d0>], 'caps': [<matplotlib.lines.Line2D object at 0x7f73b6bf4730>, <matplotlib.lines.Line2D object at 0x7f73b6bf4a90>], 'boxes': [<matplotlib.lines.Line2D object at 0x7f73b6bf3d00>], 'medians': [<matplotlib.lines.Line2D object at 0x7f73b6bf4df0>], 'fliers': [<matplotlib.lines.Line2D object at 0x7f73b6f107f0>], 'means': []}
Copy to clipboard
fig6, ax6 = plt.subplots()
ax6.set_title('Shorter Whisker Length')
ax6.boxplot(data, flierprops=red_square, vert=False, whis=0.75)
Copy to clipboard
Shorter Whisker Length

Out:

{'whiskers': [<matplotlib.lines.Line2D object at 0x7f73b6e25160>, <matplotlib.lines.Line2D object at 0x7f73b6e25490>], 'caps': [<matplotlib.lines.Line2D object at 0x7f73b6e257f0>, <matplotlib.lines.Line2D object at 0x7f73b6e25b50>], 'boxes': [<matplotlib.lines.Line2D object at 0x7f73b6e18dc0>], 'medians': [<matplotlib.lines.Line2D object at 0x7f73b6e25eb0>], 'fliers': [<matplotlib.lines.Line2D object at 0x7f73b6e20250>], 'means': []}
Copy to clipboard

Fake up some more data

spread = np.random.rand(50) * 100
center = np.ones(25) * 40
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
d2 = np.concatenate((spread, center, flier_high, flier_low))
Copy to clipboard

Making a 2-D array only works if all the columns are the same length. If they are not, then use a list instead. This is actually more efficient because boxplot converts a 2-D array into a list of vectors internally anyway.

data = [data, d2, d2[::2]]
fig7, ax7 = plt.subplots()
ax7.set_title('Multiple Samples with Different sizes')
ax7.boxplot(data)

plt.show()
Copy to clipboard
Multiple Samples with Different sizes

References

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

Out:

<function boxplot at 0x7f73be824dc0>
Copy to clipboard

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

Keywords: matplotlib code example, codex, python plot, pyplot Gallery generated by Sphinx-Gallery