Guide to using matplotlib subplots in Python

Guide to using matplotlib subplots in Python

In the realm of data science and analytics, the adage “a picture is worth a thousand words” holds particularly true. Data visualization is a critical skill set, enabling the transformation of complex datasets into clear and intuitive graphical representations. Matplotlib, a powerful plotting library in Python, stands as a cornerstone for data visualization tasks. Among its many features, the ability to create subplots is particularly valuable, allowing for the juxtaposition of multiple plots within a single figure. This capability is instrumental in comparing different datasets or aspects of the same data, thereby providing deeper insights through visual analysis.

Introduction to Matplotlib

Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python. Its significance in the data visualization domain cannot be overstated, as it provides a wide array of tools and techniques for visual data exploration. Subplots, in particular, enable the creation of complex figures with multiple axes, facilitating the comparison of different data visualizations side-by-side or in a grid layout. This functionality enriches the storytelling aspect of data analysis, making Matplotlib an indispensable tool for data scientists and analysts.

Setting Up Your Environment

To get started with Matplotlib, you first need to ensure it’s installed in your Python environment. If you’re using codedamn or a similar platform, you typically have an environment that’s already set up for you. However, for local development, you can install Matplotlib using pip:

pip install matplotlib

It’s also recommended to work within a virtual environment to manage your project’s dependencies effectively. For data visualization tasks, ensuring that your Python environment has other data manipulation libraries like NumPy and pandas can also be beneficial.

Understanding the Basics of Subplots

Subplots are a feature in Matplotlib that allows the creation of figures that contain multiple axes or plots. These are incredibly useful for comparing different plots in a single figure to provide a cohesive visual analysis of related data.

Definition and Significance

A subplot in Matplotlib refers to an individual plot within a grid of plots. Collectively, these subplots can efficiently communicate complex relationships and comparisons across different datasets. The ability to customize the arrangement and appearance of subplots enhances the flexibility and expressiveness of data visualizations.

Differences: subplots, subplot, and subplots_adjust

  • subplots is a function that creates a figure and a grid of subplots with a single call. It returns a figure object and an array of axes objects.
  • subplot (without the ‘s’) is used to add a single subplot to an existing figure at a specified grid position.
  • subplots_adjust is a method that allows fine-tuning of the spacing between subplots, providing control over the layout beyond what is automatically arranged.

Creating a Simple Subplot

Using plt.subplots()

To create a simple subplot, you can use the plt.subplots() function. This is a convenient way to create both a figure and a set of subplots.

import matplotlib.pyplot as plt

# Create a figure and a set of subplots
fig, ax = plt.subplots()

# Display the figure

Plotting Data

Plotting data on these axes is straightforward. Here’s an example of plotting a simple line chart:

ax.plot([1, 2, 3, 4], [10, 20, 25, 30])

Customizing the Subplot

Adding titles, labels, and legends is essential for making your plots readable and informative.

ax.set_title('Simple Plot')
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
plt.legend(['Example Legend'])

Advanced Subplot Configurations

Adjusting Size and Layout

You can adjust the size of the figure using the figsize parameter in plt.subplots() and manipulate the layout with subplots_adjust.

fig, ax = plt.subplots(figsize=(8, 6))
fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)

Sharing Axes and Synchronizing Scales

Linking axes and synchronizing scales between subplots can be done using the sharex and sharey parameters, making it easier to compare similar data.

Dynamic Subplot Addition

Adding subplots dynamically based on data can involve iterating over datasets and creating subplots within a loop. This requires careful management of subplot indices and figure layout adjustments to accommodate new plots.

Understanding GridSpec

GridSpec is a Matplotlib tool that allows for more complex subplot positioning within a figure. It provides the flexibility to arrange subplots in a grid of rows and columns, where each subplot can span multiple rows or columns. To begin using GridSpec, you must first import it:

from matplotlib import pyplot as plt
from matplotlib.gridspec import GridSpec

Spanning Subplots Across Grids

Creating subplots that span multiple rows or columns can be achieved with the rowspan and colspan parameters. This is particularly useful when you want to highlight a specific subplot or allocate more space to it. For example:

fig = plt.figure(figsize=(10, 8))
gs = GridSpec(3, 3, figure=fig)

ax1 = fig.add_subplot(gs[0, :])
ax2 = fig.add_subplot(gs[1, :-1])
ax3 = fig.add_subplot(gs[1:, -1])
ax4 = fig.add_subplot(gs[-1, 0])
ax5 = fig.add_subplot(gs[-1, -2])

This layout creates a variety of subplot sizes and positions, demonstrating the flexibility of GridSpec.

Styling and Customization

Enhancing the visual appeal of your subplots can make your data presentation more engaging and easier to understand.

Customizing Subplot Backgrounds and Gridlines

Altering the background color and gridlines can be done through the set_facecolor and grid methods. Customizing these aspects can greatly improve readability and aesthetic appeal.


Applying Color Maps and Themes

Matplotlib offers a wide range of color maps and themes that can be applied to your subplots. Utilizing these effectively can convey your data more intuitively. For a comprehensive list of available color maps, visit the Matplotlib documentation.

Integrating Subplots with Other Libraries

Matplotlib’s flexibility extends to easy integration with other data visualization libraries, enhancing its utility.

With Pandas

Pandas DataFrames can be directly plotted using Matplotlib, allowing for seamless transition between data manipulation and visualization.

import pandas as pd

df = pd.DataFrame({'data': [1, 2, 3, 4]})
df.plot(kind='bar', ax=ax1)

With Other Libraries (e.g., Seaborn)

Seaborn, a statistical data visualization library built on top of Matplotlib, integrates smoothly, enabling sophisticated visualizations with minimal code.

import seaborn as sns

sns.boxplot(x='category', y='value', data=df, ax=ax2)


Through understanding GridSpec, customizing appearance, integrating with other libraries, creating interactive plots, and troubleshooting common issues, this guide aims to enhance your proficiency with Matplotlib’s subplots. Experimentation is key to discovering the vast potential of these tools in your data visualization projects.

Sharing is caring

Did you like what Mehul Mohan wrote? Thank them for their work by sharing it on social media.


No comments so far

Curious about this topic? Continue your journey with these coding courses: