You are reading an old version of the documentation (v3.1.0). For the latest version see
Version 3.1.0
Fork me on GitHub

Table of Contents


Axes.stem(self, *args, linefmt=None, markerfmt=None, basefmt=None, bottom=0, label=None, use_line_collection=False, data=None)[source]

Create a stem plot.

A stem plot plots vertical lines at each x location from the baseline to y, and places a marker there.

Call signature:

stem([x,] y, linefmt=None, markerfmt=None, basefmt=None)

The x-positions are optional. The formats may be provided either as positional or as keyword-arguments.

x : array-like, optional

The x-positions of the stems. Default: (0, 1, ..., len(y) - 1).

y : array-like

The y-values of the stem heads.

linefmt : str, optional

A string defining the properties of the vertical lines. Usually, this will be a color or a color and a linestyle:

Character Line Style
'-' solid line
'--' dashed line
'-.' dash-dot line
':' dotted line

Default: 'C0-', i.e. solid line with the first color of the color cycle.

Note: While it is technically possible to specify valid formats other than color or color and linestyle (e.g. 'rx' or '-.'), this is beyond the intention of the method and will most likely not result in a reasonable reasonable plot.

markerfmt : str, optional

A string defining the properties of the markers at the stem heads. Default: 'C0o', i.e. filled circles with the first color of the color cycle.

basefmt : str, optional

A format string defining the properties of the baseline.

Default: 'C3-' ('C2-' in classic mode).

bottom : float, optional, default: 0

The y-position of the baseline.

label : str, optional, default: None

The label to use for the stems in legends.

use_line_collection : bool, optional, default: False

If True, store and plot the stem lines as a LineCollection instead of individual lines. This significantly increases performance, and will become the default option in Matplotlib 3.3. If False, defaults to the old behavior of using a list of Line2D objects.

container : StemContainer

The container may be treated like a tuple (markerline, stemlines, baseline)


See also

The MATLAB function stem which inspired this method.


In addition to the above described arguments, this function can take a data keyword argument. If such a data argument is given, the following arguments are replaced by data[<arg>]:

  • All positional and all keyword arguments.

Objects passed as data must support item access (data[<arg>]) and membership test (<arg> in data).

Examples using matplotlib.axes.Axes.stem