Note

Go to the endto download the full example code.

Artist customization in box plots#

This example demonstrates how to use the various keyword arguments to fullycustomize box plots. The first figure demonstrates how to remove and addindividual components (note that the mean is the only value not shown bydefault). The second figure demonstrates how the styles of the artists can becustomized. It also demonstrates how to set the limit of the whiskers tospecific percentiles (lower right Axes)

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

importmatplotlib.pyplotaspltimportnumpyasnp# fake datanp.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:

fig,axs=plt.subplots(nrows=2,ncols=3,figsize=(6,6),sharey=True)axs[0,0].boxplot(data,tick_labels=labels)axs[0,0].set_title('Default',fontsize=fs)axs[0,1].boxplot(data,tick_labels=labels,showmeans=True)axs[0,1].set_title('showmeans=True',fontsize=fs)axs[0,2].boxplot(data,tick_labels=labels,showmeans=True,meanline=True)axs[0,2].set_title('showmeans=True,\nmeanline=True',fontsize=fs)axs[1,0].boxplot(data,tick_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,tick_labels=labels,notch=True,bootstrap=10000)axs[1,1].set_title('notch=True,\nbootstrap=10000',fontsize=fs)axs[1,2].boxplot(data,tick_labels=labels,showfliers=False)axs[1,2].set_title('showfliers=False',fontsize=fs)foraxinaxs.flat:ax.set_yscale('log')ax.set_yticklabels([])fig.subplots_adjust(hspace=0.4)plt.show()
Default, showmeans=True, showmeans=True, meanline=True, Tufte Style  (showbox=False, showcaps=False), notch=True, bootstrap=10000, showfliers=False

Demonstrate how to customize the display different elements:

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)foraxinaxs.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()
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

Tags:plot-type: boxplotdomain: statistics

References

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

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

Gallery generated by Sphinx-Gallery