How to create a Stacked Bar Chart in Pandas

A Stacked Bar Chart in Pandas can be created by first creating a dataframe, then assigning the data values to the x and y axes, and then using the .plot.bar() function with the parameter stacked=True to create a Stacked Bar Chart. This will display the data, with each column representing the y-axis values for the corresponding x-axis values. The resulting chart will show the relative contribution of each category to the total.


You can use the following basic syntax to create a stacked bar chart in pandas:

df.groupby(['var1', 'var2']).size().unstack().plot(kind='bar', stacked=True)

The following example shows how to use this syntax in practice.

Example: Create Stacked Bar Chart in Pandas

Suppose we have the following pandas DataFrame that contains information about various basketball players:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'G', 'F', 'F', 'G', 'F', 'F', 'F'],
                   'points': [5, 7, 7, 9, 12, 9, 9, 4]})

#view DataFrame
print(df)

  team position  points
0    A        G       5
1    A        G       7
2    A        F       7
3    A        F       9
4    B        G      12
5    B        F       9
6    B        F       9
7    B        F       4

We can use the following code to create a stacked bar chart that displays the total count of position, grouped by team:

df.groupby(['team', 'position']).size().unstack().plot(kind='bar', stacked=True)

The x-axis shows the team name and the y-axis shows the total count of position for each team.

From the chart we can see that team A has 2 guards (G) and 2 forwards (F) while team B has 1 guard and 3 forwards.

We can also use the color and title arguments to modify the color of the bars and add a title to the chart:

df.groupby(['team', 'position']).size().unstack().plot(kind='bar', stacked=True,
            color=['steelblue','pink'], title='Position Count by Team')

stacked bar chart in pandas

A title has been added to the top of the plot and the colors of the bars have been changed to steelblue and pink, just as we specified.

The following tutorials explain how to create other common charts in Python:

x