Home ยป Matplotlib Stack Plot in python

Matplotlib Stack Plot in python

A Stackplot is used to draw a stacked area plot. It shows each part stacked onto one another.

Syntax

matplotlib.pyplot.stackplot(x, *args, labels=(), colors=None, baseline=’zero’, data=None, **kwargs)

Draw a stacked area plot.

Parameters

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.
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).
**kwargs
All other keyword arguments are passed to Axes.fill_between.

Returns

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

 

Examples

Basic example

 

import matplotlib.pyplot as plot
import numpy as np

months= [x for x in range(1,13)]

#create data set
Adsense = [750, 560, 590, 620, 650, 580, 
           650, 800, 900, 600, 580, 980]
Affiliate = [200, 190, 220, 280, 300, 600, 
        140, 350, 420, 370, 400, 220]
Sales = [320, 450, 390, 380, 360, 450, 
           260, 280, 210, 430, 440, 390]
Ebooks = [100, 110, 120, 190, 160, 110, 
             160, 120, 190, 240, 170, 120]
revenue = [Adsense, Affiliate, Sales, Ebooks]

fig, ax = plot.subplots()
ax.set_title("Business Revenue")
ax.set_xlabel("Months")
ax.set_ylabel("Revenue (in $)")

#draw stack plot
ax.stackplot(months, revenue)
ax.legend(["Adsense", "Affiliate", "Sales", "Ebooks"])

plot.show()

This displayed the following

symmetrical stack plot

When baseline=”sym” is used

import matplotlib.pyplot as plot
import numpy as np

months= [x for x in range(1,13)]

#create data set
Adsense = [750, 560, 590, 620, 650, 580, 
           650, 800, 900, 600, 580, 980]
Affiliate = [200, 190, 220, 280, 300, 600, 
        140, 350, 420, 370, 400, 220]
Sales = [320, 450, 390, 380, 360, 450, 
           260, 280, 210, 430, 440, 390]
Ebooks = [100, 110, 120, 190, 160, 110, 
             160, 120, 190, 240, 170, 120]
revenue = [Adsense, Affiliate, Sales, Ebooks]

fig, ax = plot.subplots()
ax.set_title("Business Revenue")
ax.set_xlabel("Months")
ax.set_ylabel("Revenue (in $)")

#draw stack plot
col = ['green', 'orange', 'red', 'blue']
ax.stackplot(months, revenue, colors=col, baseline="sym")
ax.legend(["Adsense", "Affiliate", "Sales", "Ebooks"])

plot.show()

This displayed the following

You may also like

Leave a Comment

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More