Axes.stackplot(x, *args, labels=(), colors=None, baseline='zero', data=None, **kwargs)[source]#

Draw a stacked area plot.

x(N,) array-like
y(M, N) array-like

The data is assumed to be unstacked. Each of the following calls is legal:

stackplot(x, y)           # where y has shape (M, N)
stackplot(x, y1, y2, y3)  # where y1, y2, y3, y4 have length N
baseline{'zero', 'sym', 'wiggle', 'weighted_wiggle'}

Method used to calculate the baseline:

  • 'zero': Constant zero baseline, i.e. a simple stacked plot.

  • 'sym': Symmetric around zero and is sometimes called 'ThemeRiver'.

  • 'wiggle': Minimizes the sum of the squared slopes.

  • 'weighted_wiggle': Does the same but weights to account for size of each layer. It is also called 'Streamgraph'-layout. More details can be found at

labelslist of str, optional

A sequence of labels to assign to each data series. If unspecified, then no labels will be applied to artists.

colorslist of color, optional

A sequence of colors to be cycled through and used to color the stacked areas. The sequence need not be exactly the same length as the number of provided y, in which case the colors will repeat from the beginning.

If not specified, the colors from the Axes property cycle will be used.

dataindexable object, optional

If given, all parameters also accept a string s, which is interpreted as data[s] (unless this raises an exception).


All other keyword arguments are passed to Axes.fill_between.

list of PolyCollection

A list of PolyCollection instances, one for each element in the stacked area plot.

Examples using matplotlib.axes.Axes.stackplot#

Stackplots and streamgraphs

Stackplots and streamgraphs

stackplot(x, y)

stackplot(x, y)