- matplotlib.pyplot.boxplot(
*x*,*notch=None*,*sym=None*,*vert=None*,*whis=None*,*positions=None*,*widths=None*,*patch_artist=None*,*bootstrap=None*,*usermedians=None*,*conf_intervals=None*,*meanline=None*,*showmeans=None*,*showcaps=None*,*showbox=None*,*showfliers=None*,*boxprops=None*,*tick_labels=None*,*flierprops=None*,*medianprops=None*,*meanprops=None*,*capprops=None*,*whiskerprops=None*,*manage_ticks=True*,*autorange=False*,*zorder=None*,*capwidths=None*,*label=None*,***,*data=None*)[source]# Draw a box and whisker plot.

The box extends from the first quartile (Q1) to the thirdquartile (Q3) of the data, with a line at the median.The whiskers extend from the box to the farthest data pointlying within 1.5x the inter-quartile range (IQR) from the box.Flier points are those past the end of the whiskers.See https://en.wikipedia.org/wiki/Box_plot for reference.

Q1-1.5IQR Q1 median Q3 Q3+1.5IQR |-----:-----| o |--------| : |--------| o o |-----:-----|flier <-----------> fliers IQR

- Parameters:
**x**Array or a sequence of vectors.The input data. If a 2D array, a boxplot is drawn for each columnin

*x*. If a sequence of 1D arrays, a boxplot is drawn for eacharray in*x*.**notch**bool, default:`rcParams["boxplot.notch"]`

(default:`False`

)Whether to draw a notched boxplot (

`True`

), or a rectangularboxplot (`False`

). The notches represent the confidence interval(CI) around the median. The documentation for*bootstrap*describes how the locations of the notches are computed bydefault, but their locations may also be overridden by setting the*conf_intervals*parameter.Note

In cases where the values of the CI are less than thelower quartile or greater than the upper quartile, thenotches will extend beyond the box, giving it adistinctive "flipped" appearance. This is expectedbehavior and consistent with other statisticalvisualization packages.

**sym**str, optionalThe default symbol for flier points. An empty string ('') hidesthe fliers. If

`None`

, then the fliers default to 'b+'. Morecontrol is provided by the*flierprops*parameter.**vert**bool, default:`rcParams["boxplot.vertical"]`

(default:`True`

)If

`True`

, draws vertical boxes.If`False`

, draw horizontal boxes.**whis**float or (float, float), default: 1.5The position of the whiskers.

If a float, the lower whisker is at the lowest datum above

`Q1 - whis*(Q3-Q1)`

, and the upper whisker at the highest datumbelow`Q3 + whis*(Q3-Q1)`

, where Q1 and Q3 are the first andthird quartiles. The default value of`whis = 1.5`

correspondsto Tukey's original definition of boxplots.If a pair of floats, they indicate the percentiles at which todraw the whiskers (e.g., (5, 95)). In particular, setting this to(0, 100) results in whiskers covering the whole range of the data.

In the edge case where

`Q1 == Q3`

,*whis*is automatically setto (0, 100) (cover the whole range of the data) if*autorange*isTrue.Beyond the whiskers, data are considered outliers and are plottedas individual points.

**bootstrap**int, optionalSpecifies whether to bootstrap the confidence intervalsaround the median for notched boxplots. If

*bootstrap*isNone, no bootstrapping is performed, and notches arecalculated using a Gaussian-based asymptotic approximation(see McGill, R., Tukey, J.W., and Larsen, W.A., 1978, andKendall and Stuart, 1967). Otherwise, bootstrap specifiesthe number of times to bootstrap the median to determine its95% confidence intervals. Values between 1000 and 10000 arerecommended.**usermedians**1D array-like, optionalA 1D array-like of length

`len(x)`

. Each entry that is not`None`

forces the value of the median for the correspondingdataset. For entries that are`None`

, the medians are computedby Matplotlib as normal.**conf_intervals**array-like, optionalA 2D array-like of shape

`(len(x), 2)`

. Each entry that is notNone forces the location of the corresponding notch (which isonly drawn if*notch*is`True`

). For entries that are`None`

,the notches are computed by the method specified by the otherparameters (e.g.,*bootstrap*).**positions**array-like, optionalThe positions of the boxes. The ticks and limits areautomatically set to match the positions. Defaults to

`range(1, N+1)`

where N is the number of boxes to be drawn.**widths**float or array-likeThe widths of the boxes. The default is 0.5, or

`0.15*(distancebetween extreme positions)`

, if that is smaller.**patch_artist**bool, default:`rcParams["boxplot.patchartist"]`

(default:`False`

)If

`False`

produces boxes with the Line2D artist. Otherwise,boxes are drawn with Patch artists.**tick_labels**list of str, optionalThe tick labels of each boxplot.Ticks are always placed at the box

*positions*. If*tick_labels*is given,the ticks are labelled accordingly. Otherwise, they keep their numericvalues.Changed in version 3.9: Renamed from

*labels*, which is deprecated since 3.9and will be removed in 3.11.**manage_ticks**bool, default: TrueIf True, the tick locations and labels will be adjusted to matchthe boxplot positions.

**autorange**bool, default: FalseWhen

`True`

and the data are distributed such that the 25th and75th percentiles are equal,*whis*is set to (0, 100) suchthat the whisker ends are at the minimum and maximum of the data.**meanline**bool, default:`rcParams["boxplot.meanline"]`

(default:`False`

)If

`True`

(and*showmeans*is`True`

), will try to render themean as a line spanning the full width of the box according to*meanprops*(see below). Not recommended if*shownotches*is alsoTrue. Otherwise, means will be shown as points.**zorder**float, default:`Line2D.zorder = 2`

The zorder of the boxplot.

- Returns:
- dict
A dictionary mapping each component of the boxplot to a listof the Line2D instances created. That dictionary has thefollowing keys (assuming vertical boxplots):

`boxes`

: the main body of the boxplot showing thequartiles and the median's confidence intervals ifenabled.`medians`

: horizontal lines at the median of each box.`whiskers`

: the vertical lines extending to the mostextreme, non-outlier data points.`caps`

: the horizontal lines at the ends of thewhiskers.`fliers`

: points representing data that extend beyondthe whiskers (fliers).`means`

: points or lines representing the means.

- Other Parameters:
**showcaps**bool, default:`rcParams["boxplot.showcaps"]`

(default:`True`

)Show the caps on the ends of whiskers.

**showbox**bool, default:`rcParams["boxplot.showbox"]`

(default:`True`

)Show the central box.

**showfliers**bool, default:`rcParams["boxplot.showfliers"]`

(default:`True`

)Show the outliers beyond the caps.

**showmeans**bool, default:`rcParams["boxplot.showmeans"]`

(default:`False`

)Show the arithmetic means.

**capprops**dict, default: NoneThe style of the caps.

**capwidths**float or array, default: NoneThe widths of the caps.

**boxprops**dict, default: NoneThe style of the box.

**whiskerprops**dict, default: NoneThe style of the whiskers.

**flierprops**dict, default: NoneThe style of the fliers.

**medianprops**dict, default: NoneThe style of the median.

**meanprops**dict, default: NoneThe style of the mean.

**label**str or list of str, optionalLegend labels. Use a single string when all boxes have the same style andyou only want a single legend entry for them. Use a list of strings tolabel all boxes individually. To be distinguishable, the boxes should bestyled individually, which is currently only possible by modifying thereturned artists, see e.g. Boxplots.

In the case of a single string, the legend entry will technically beassociated with the first box only. By default, the legend will show themedian line (

`result["medians"]`

); if*patch_artist*is True, the legendwill show the box Patch artists (`result["boxes"]`

) instead.New in version 3.9.

**data**indexable object, optionalIf given, all parameters also accept a string

`s`

, which isinterpreted as`data[s]`

(unless this raises an exception).

See also

- Axes.bxp
Draw a boxplot from pre-computed statistics.

- violinplot
Draw an estimate of the probability density function.

Notes

Note

This is the pyplot wrapper for axes.Axes.boxplot.

## Examples using `matplotlib.pyplot.boxplot`

#

Artist customization in box plots

Artist customization in box plots

Box plots with custom fill colors

Box plots with custom fill colors

Boxplots

Boxplots

Box plot vs. violin plot comparison

Box plot vs. violin plot comparison