Plotting multiple bar charts using Matplotlib in Python
Last Updated :
09 Apr, 2025
Matplotlib is a powerful visualization library in Python that allows for the creation of various types of plots, including bar charts. When working with multiple bar charts, we can represent data in two main ways, grouped bar charts (multiple bars within one chart) and separate bar charts (multiple figures for different data sets). Let's explore each one in detail.
Using ax.bar() in a single plot
ax.bar() is part of Matplotlib's object-oriented interface, where you explicitly create and control axes (ax) using plt.subplots(). This method is preferred when building complex layouts, multiple subplots or customized visualizations. It gives you fine-grained control over every element of the plot.
Python
import numpy as np
import matplotlib.pyplot as plt
cats = ['A', 'B', 'C', 'D'] # categories
vals1, vals2 = [4, 7, 1, 8], [5, 6, 2, 9]
# Bar width and x locations
w, x = 0.4, np.arange(len(cats))
fig, ax = plt.subplots()
ax.bar(x - w/2, vals1, width=w, label='Set 1')
ax.bar(x + w/2, vals2, width=w, label='Set 2')
ax.set_xticks(x)
ax.set_xticklabels(cats)
ax.set_ylabel('Values')
ax.set_title('Grouped Bar Chart')
ax.legend()
plt.show()
Output
Using ax.bar()Explanation: This code defines categories and values, sets bar width and x-axis positions, and plots two datasets side by side using ax.bar(). It adjusts x-axis labels and adds a legend for clarity before displaying the chart.
Using plt.bar() in a single plot
plt.bar() belongs to Matplotlib’s state-machine (pyplot) interface, which manages the figure and axes behind the scenes. It is great for quick and simple plots when you don't need multiple subplots or deep customization. However, it offers less flexibility compared to the object-oriented approach.
Python
import numpy as np
import matplotlib.pyplot as plt
cats = ['A', 'B', 'C', 'D']
v1, v2 = [4, 7, 1, 8], [5, 6, 2, 9]
w, x = 0.4, np.arange(len(cats))
plt.bar(x - w/2, v1, w, label='Set 1')
plt.bar(x + w/2, v2, w, label='Set 2')
plt.xticks(x, cats)
plt.ylabel('Values')
plt.title('Grouped Bar Chart')
plt.legend()
plt.show()
Output

Explanation: This code defines categories and values, sets bar width and x-axis positions, and plots two datasets side by side using plt.bar(). It adjusts x-axis labels, adds a title and legend for clarity, and displays the chart.
Using subplots(plt.subplots()) for seperate charts
With plt.subplots(), multiple bar charts can be plotted within a single figure but in different axes. This method is ideal when you want to compare datasets visually while keeping them separate. It provides a clean, organized layout with each dataset in its own subplot.
Python
import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
# First dataset
axes[0].bar(categories, values1, color='blue')
axes[0].set_title("Set 1")
axes[0].set_ylabel("Values")
# Second dataset
axes[1].bar(categories, values2, color='green')
axes[1].set_title("Set 2")
axes[1].set_ylabel("Values")
plt.tight_layout()
plt.show()
Using subplotsExplanation: This code creates two side-by-side subplots using plt.subplots(), each displaying a bar chart for a separate dataset. It assigns titles and labels to each subplot, adjusts layout spacing with plt.tight_layout() and displays the figure.
This method creates entirely separate figures for each dataset using plt.figure(), ensuring complete independence between plots. It is useful when each dataset requires its own visualization without sharing the same figure, making it easier to analyze them individually.
Python
import matplotlib.pyplot as plt
plt.figure()
plt.bar(categories, values1, color='blue')
plt.title("Set 1")
plt.ylabel("Values")
plt.show()
plt.figure()
plt.bar(categories, values2, color='green')
plt.title("Set 2")
plt.ylabel("Values")
plt.show()
Output
Using plt.figure()
Using plt.figure()Explanation: This code creates two separate figures using plt.figure(), each displaying a bar chart for a different dataset. It assigns titles and labels independently to each figure and displays them separately.
Similar Reads
Plotting Histogram in Python using Matplotlib Histograms are a fundamental tool in data visualization, providing a graphical representation of the distribution of data. They are particularly useful for exploring continuous data, such as numerical measurements or sensor readings. This article will guide you through the process of Plot Histogram
6 min read
Bar chart using Plotly in Python Plotly is a Python library which is used to design graphs, especially interactive graphs. It can plot various graphs and charts like histogram, barplot, boxplot, spreadplot, and many more. It is mainly used in data analysis as well as financial analysis. Plotly is an interactive visualization librar
4 min read
Python | Basic Gantt chart using Matplotlib Prerequisites : Matplotlib IntroductionIn this article, we will be discussing how to plot a Gantt Chart in Python using Matplotlib.A Gantt chart is a graphical depiction of a project schedule or task schedule (In OS). It's is a type of bar chart that shows the start and finish dates of several eleme
3 min read
Matplotlib.pyplot.barbs() in Python Matplotlib is a library of Python bindings which provides the user with a MATLAB-like plotting framework. Matplotlib can be used in Python scripts, the Python and IPython shell, web application servers, and various graphical user interface toolkits like Tkinter, awxPython, etc. Note: For more inform
3 min read
Matplotlib.pyplot.barh() function in Python A bar plot or bar chart is a graph that represents the category of data with rectangular bars with lengths and heights that is proportional to the values which they represent. The bar plots can be plotted horizontally or vertically. A bar chart describes the comparisons between the discrete categori
3 min read
Python | Plotting bar charts in excel sheet using XlsxWriter module Prerequisite: Create and Write on an excel file.XlsxWriter is a Python library using which one can perform multiple operations on excel files like creating, writing, arithmetic operations and plotting graphs. Letâs see how to plot different type of Bar charts using realtime data. Charts are composed
6 min read
Plotting back-to-back bar charts Matplotlib In this article, we will learn how to plot back-to-back bar charts in matplotlib in python. Let's discuss some concepts : Matplotlib: Matplotlib is an amazing visualization library in Python for 2D plots of arrays. Matplotlib is a multi-platform data visualization library built on NumPy arrays and d
2 min read
Errorbar graph in Python using Matplotlib Error bars are a graphical overlay used to display the variability or uncertainty of points plotted on a Cartesian graph. They provide a further level of information to data shown, giving an indication of the accuracy of measurements and making a more accurate representation of variability in the da
3 min read
Simple Plot in Python using Matplotlib Creating simple plots is a common step in data visualization. These visual representations help us to understand trends, patterns and relationships within data. Matplotlib is one of the most popular plotting libraries in Python which makes it easy to generate high-quality graphs with just a few line
4 min read
Matplotlib.axes.Axes.plot() in Python Axes.plot() method in Matplotlib is used to plot data on a set of axes. It is primarily used for creating line plots but can be extended for other types of plots, including scatter plots, bar plots, and more. When using this function, you typically provide the x and y coordinates of the data points
3 min read