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')
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.
Additional Resources
The following tutorials explain how to create other common charts in Python:
How to Create Heatmaps in Python
How to Create a Bell Curve in Python
How to Create an Ogive Graph in Python