How to generate stacked BAR plot in Python?

This recipe helps you generate stacked BAR plot in Python

Recipe Objective

Graphical representation of data gives us a better idea of the data. Bar graph is one of the way to do that.

So this is the recipe on how we can generate stacked BAR plot in Python.

Step 1 - Importing Library

import pandas as pd import matplotlib.pyplot as plt

We have only imported pandas and matplotlib which is needed.

Step 2 - Creating a dataframe

We have created a dictionary with different values and passed it to pd.DataFrame to create a dataframe. raw_data = {"first_name": ["Jason", "Molly", "Tina", "Jake", "Amy"], "pre_score": [4, 24, 31, 2, 3], "mid_score": [25, 94, 57, 62, 70], "post_score": [5, 43, 23, 23, 51]} df = pd.DataFrame(raw_data, columns = ["first_name", "pre_score", "mid_score", "post_score"]) print(df)

Step 3 - Creating Bar Graph

We have created a bar graph for that we have to set various things. We have fixed bar width, bar boundries and their position. f, ax = plt.subplots(1, figsize=(10,5)) bar_width = 1 bar_l = [i for i in range(len(df["pre_score"]))] tick_pos = [i+(bar_width/2)-0.5 for i in bar_l] Here we have set the stack segment of the bar graph, by calculating total and individual sum and their percentage. We have also set the position of the bar. totals = [i+j+k for i,j,k in zip(df["pre_score"], df["mid_score"], df["post_score"])] pre_rel = [i / j * 100 for i,j in zip(df["pre_score"], totals)] mid_rel = [i / j * 100 for i,j in zip(df["mid_score"], totals)] post_rel = [i / j * 100 for i,j in zip(df["post_score"], totals)] ax.bar(bar_l, pre_rel, label="Pre Score", alpha=0.9, width=bar_width, edgecolor="white") ax.bar(bar_l, mid_rel, bottom=pre_rel, label="Mid Score", alpha=0.9, width=bar_width, edgecolor="white") ax.bar(bar_l, post_rel, bottom=[i+j for i,j in zip(pre_rel, mid_rel)], label="Post Score", alpha=0.9, width=bar_width, edgecolor="white") We are setting the label of x axis, y axis and other parameters of the plot. print(tick_pos) plt.xticks(tick_pos, df["first_name"]) ax.set_ylabel("Percentage") ax.set_xlabel("") plt.xlim([min(tick_pos)-bar_width, max(tick_pos)+bar_width]) plt.ylim(-10, 110) plt.setp(plt.gca().get_xticklabels(), rotation=45) plt.show()

  first_name  pre_score  mid_score  post_score
0      Jason          4         25           5
1      Molly         24         94          43
2       Tina         31         57          23
3       Jake          2         62          23
4        Amy          3         70          51
[0.0, 1.0, 2.0, 3.0, 4.0]

Download Materials

What Users are saying..

profile image

Jingwei Li

Graduate Research assistance at Stony Brook University
linkedin profile url

ProjectPro is an awesome platform that helps me learn much hands-on industrial experience with a step-by-step walkthrough of projects. There are two primary paths to learn: Data Science and Big Data.... Read More

Relevant Projects

Build a Text Classification Model with Attention Mechanism NLP
In this NLP Project, you will learn to build a multi class text classification model with attention mechanism.

Build a Review Classification Model using Gated Recurrent Unit
In this Machine Learning project, you will build a classification model in python to classify the reviews of an app on a scale of 1 to 5 using Gated Recurrent Unit.

AWS MLOps Project for Gaussian Process Time Series Modeling
MLOps Project to Build and Deploy a Gaussian Process Time Series Model in Python on AWS

Expedia Hotel Recommendations Data Science Project
In this data science project, you will contextualize customer data and predict the likelihood a customer will stay at 100 different hotel groups.

Isolation Forest Model and LOF for Anomaly Detection in Python
Credit Card Fraud Detection Project - Build an Isolation Forest Model and Local Outlier Factor (LOF) in Python to identify fraudulent credit card transactions.

Ecommerce product reviews - Pairwise ranking and sentiment analysis
This project analyzes a dataset containing ecommerce product reviews. The goal is to use machine learning models to perform sentiment analysis on product reviews and rank them based on relevance. Reviews play a key role in product recommendation systems.

Build Multi Class Text Classification Models with RNN and LSTM
In this Deep Learning Project, you will use the customer complaints data about consumer financial products to build multi-class text classification models using RNN and LSTM.

Build ARCH and GARCH Models in Time Series using Python
In this Project we will build an ARCH and a GARCH model using Python

Recommender System Machine Learning Project for Beginners-1
Recommender System Machine Learning Project for Beginners - Learn how to design, implement and train a rule-based recommender system in Python

Build Portfolio Optimization Machine Learning Models in R
Machine Learning Project for Financial Risk Modelling and Portfolio Optimization with R- Build a machine learning model in R to develop a strategy for building a portfolio for maximized returns.