matplotlib.pyplot.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
labelsLength N list of str

Labels to assign to each data series.

colorsLength N list of color

A list or tuple of colors. These will be cycled through and used to colour the stacked areas.


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.



In addition to the above described arguments, this function can take a data keyword argument. If such a data argument is given, every other argument can also be string s, which is interpreted as data[s] (unless this raises an exception).

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

Examples using matplotlib.pyplot.stackplot