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
Plot a Pie Chart in Python using Matplotlib
A Pie Chart is a circular statistical plot that can display only one series of data. The area of the chart is the total percentage of the given data. Pie charts in Python are widely used in business presentations, reports, and dashboards due to their simplicity and effectiveness in displaying data d
8 min read
Multiplots in Python using Matplotlib
Matplotlib is a Python library that can be used for plotting graphs and figures. Plotting multiplots or multiple plots are often required either for comparing the two curves or show some gradual changes in the multiple plots, and this can be done using Subplots. Subplots are one of the most importan
3 min read
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
Box Plot in Python using Matplotlib
A Box Plot (or Whisker plot) display the summary of a data set, including minimum, first quartile, median, third quartile and maximum. it consists of a box from the first quartile to the third quartile, with a vertical line at the median. the x-axis denotes the data to be plotted while the y-axis sh
3 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
Plotting Sine and Cosine Graph using Matplotlib in Python
Data visualization and Plotting is an essential skill that allows us to spot trends in data and outliers. With the help of plots, we can easily discover and present useful information about the data. In this article, we are going to plot a sine and cosine graph using Matplotlib in Python. Matplotlib
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
Plot multiple plots in Matplotlib
Prerequisites: MatplotlibIn Matplotlib, we can draw multiple graphs in a single plot in two ways. One is by using subplot() function and other by superimposition of second graph on the first i.e, all graphs will appear on the same plot. We will look into both the ways one by one.Multiple Plots using
6 min read
Python | Matplotlib Sub plotting using object oriented API
Plotting using Object Oriented(OO) API in matplotlib is an easy approach to plot graphs and other data visualization methods. The simple syntax to create the class and object for sub-plotting is - class_name, object_name = matplotlib.pyplot.subplots('no_of_rows', 'no_of_columns') Let's take some exa
2 min read