Adding Subtitles to Plots in Python: A Complete Guide


Adding subtitles to plots is an essential part of data visualization. Subtitles provide context to the plot and help the viewer understand the purpose of the visualization. In Python, adding subtitles to plots is a straightforward process that can be achieved using Matplotlib – a popular data visualization library.

Matplotlib provides the `title()` function that can be used to add a title to a plot. Similarly, we can use the `suptitle()` function to add a centered title above multiple subplots. However, if we want to add subtitles, we need to use the `text()` function.

The `text()` function takes three arguments: the x-coordinate and y-coordinate of where you want to place the text, and the text itself. We can use this function to add subtitles below or above a plot.

Here’s an example code snippet that adds a subtitle to a simple line plot:

Why add subtitles to plots?

Adding subtitles to plots is a crucial aspect of data visualization. It helps to give more context to the plot and communicate its purpose more effectively. A well-crafted subtitle can provide additional information about the data being plotted, such as the units of measurement, time period, or any significant trends or patterns that emerge from the data.

Moreover, adding subtitles makes it easier for viewers to understand the plot’s purpose at first glance, especially when they are viewing multiple plots simultaneously. Without subtitles, viewers may have to spend extra time deciphering what each plot represents, which can be time-consuming and frustrating.

In summary, adding subtitles to plots not only enhances their visual appeal but also makes them more informative and accessible to a wider audience. It is an essential technique for anyone looking to create effective data visualizations in Python.

Basic Plotting in Python

Plotting is an essential part of data analysis and visualization. In Python, we can create plots using the Matplotlib library. Matplotlib is a powerful plotting library that can create various types of plots, such as line plots, scatter plots, bar charts, and histograms.

Before we start creating complex visualizations with subtitles, let’s first take a look at how to create a basic plot in Python.

To begin with, we need to import Matplotlib. We can do this using the following code:

import matplotlib.pyplot as plt

Next, let’s create some data that we can plot. We’ll use NumPy to generate some random data:

import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

Here, we’ve created an array `x` with 100 equally spaced values between 0 and 10. We’ve also created an array `y` which contains the sine of each value in `x`.

Now that we have our data, we can create a basic plot using the `plot()` function:

plt.plot(x, y)

This will create a simple plot of the sine function. The `plot()` function takes two arguments: the x-values and y-values that we want to plot. Then we call `show()` to display the plot.

In addition to `plot()`, there are many other functions available in Matplotlib that allow us to customize our plots further. For example, we can add labels to the axes using the `xlabel()` and `ylabel()` functions:

plt.plot(x, y)

This will add labels to the x-axis and y-axis respectively.

Overall, creating a basic plot in Python is relatively straightforward using Matplotlib. Once you have your data, you can use the `plot()` function to create a plot and then customize it further using other functions available in Matplotlib.

Adding subtitles to plots using Matplotlib

When creating a plot using Matplotlib, it is important to add informative titles and labels to make the plot easy to understand. Adding a subtitle to a plot can provide more context or explain additional details about the data being presented.

To add a subtitle to a plot in Matplotlib, we can use the `suptitle()` function. This function allows us to add a centered title above all subplots in the figure. Here is an example:

import matplotlib.pyplot as plt

# Create some sample data
x = [1, 2, 3, 4, 5]
y = [10, 8, 6, 4, 2]

# Create a figure with one subplot
fig, ax = plt.subplots()

# Plot the data on the subplot
ax.plot(x, y)

# Add a title and subtitle to the figure
fig.suptitle('Example Plot')
plt.suptitle('This is a subtitle')

# Display the plot

In this example, we first create some sample data for our plot. Then we create a figure with one subplot using `subplots()`. We plot our data on the subplot using `plot()`.

Finally, we add a title and subtitle to the figure using `suptitle()`. The main title is added to the figure object (`fig`), while the subtitle is added directly to Matplotlib using `plt.suptitle()`.

When we run this code, we get a plot with the main title “Example Plot” centered above our subplot and the subtitle “This is a subtitle” centered above the main title.

Customizing subtitles

Subtitles are a great way to provide additional context to your plots. In Matplotlib, we can add subtitles using the `plt.suptitle()` function.

By default, the `suptitle()` function centers the subtitle at the top of the plot. However, we can customize its position by using the `x` and `y` parameters. For example, if we want to move the subtitle slightly to the right and down, we can set `x=0.5` and `y=0.95`.

import matplotlib.pyplot as plt

# Create a simple plot
x = [1, 2, 3]
y = [4, 5, 6]
plt.plot(x, y)

# Add a custom subtitle
plt.suptitle("My Plot Title", x=0.5, y=0.95)

We can also customize other aspects of the subtitle such as font size and color by passing additional parameters to the `suptitle()` function. For example:

import matplotlib.pyplot as plt

# Create a simple plot
x = [1, 2, 3]
y = [4, 5, 6]
plt.plot(x, y)

# Add a custom subtitle with larger font size and red color
plt.suptitle("My Plot Title", fontsize=16, color='red')

With these customization options available in Matplotlib’s `suptitle()` function, you can easily add informative and visually appealing subtitles to your plots in Python.

Adding subtitles to multiple subplots

When working with multiple subplots, adding subtitles to each subplot can be a great way to make the plot more informative and easier to understand.

To add subtitles to multiple subplots in Python, we can use the `set_title()` method of each subplot object. We can access each subplot object using the indexing notation, just like we did when creating the subplots.

Here’s an example:

import matplotlib.pyplot as plt
import numpy as np

# Create some data
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# Create a figure with two subplots
fig, axs = plt.subplots(1, 2, figsize=(10, 5))

# Plot the data on each subplot and set the title
axs[0].plot(x, y1)

axs[1].plot(x, y2)

# Add a main title for the entire figure
fig.suptitle('Trigonometric Functions')

In this example, we first create two arrays of data (`y1` and `y2`) and then create a figure with two subplots using `subplots()`. We then plot the data on each subplot using indexing (`axs[0]` and `axs[1]`) and set the title of each subplot using `set_title()`. Finally, we add a main title for the entire figure using `suptitle()`.

Note that we set the size of the figure using `figsize`, which takes a tuple of `(width, height)` in inches. We also call `` at the end to display the plot.

With this approach, you can easily add subtitles to multiple subplots in Python and create more informative and visually appealing plots.

Adding subtitles to 3D plots

In Python, creating 3D plots is a powerful way to visualize data in three dimensions. Adding subtitles to these plots can help clarify the purpose of the plot and make it more informative.

To add a subtitle to a 3D plot in Python, we can use the `set_title()` method of the `Axes3D` class from the `mpl_toolkits.mplot3d` module. This method takes in a string as an argument, which is used as the subtitle.

Here’s an example code snippet that creates a 3D scatter plot and adds a subtitle:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Create some random data
x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]
z = [1, 2, 3, 4, 5]

# Plot the data
ax.scatter(x, y, z)

# Add a subtitle
ax.set_title('Example 3D scatter plot with subtitle')

In this example, we first create a figure and an `Axes3D` object. We then generate some random data and plot it using the `scatter()` method. Finally, we add a subtitle to the plot using the `set_title()` method.

The resulting plot will have a clear subtitle that summarizes what the plot is showing. By following these steps and customizing the subtitle text to fit your specific needs, you can add subtitles to any type of 3D plot in Python.


In conclusion, adding subtitles to plots in Python is a simple and effective way to enhance the readability and understanding of your data visualizations. By using the `title` function from the `matplotlib.pyplot` library, you can easily add a main title to your plot. Additionally, using the `xlabel` and `ylabel` functions allows you to label the x and y axes respectively.

Furthermore, you can use the `text` function to add additional text or annotations to your plot. This function allows you to specify the coordinates of where the text should be placed on the plot.

Overall, taking the time to add subtitles and labels to your plots can greatly improve their effectiveness in conveying information. With Python’s powerful visualization libraries, such as `matplotlib`, creating informative and visually appealing plots has never been easier.
Interested in learning more? Check out our Introduction to Python course!

How to Become a Data Scientist PDF

Your FREE Guide to Become a Data Scientist

Discover the path to becoming a data scientist with our comprehensive FREE guide! Unlock your potential in this in-demand field and access valuable resources to kickstart your journey.

Don’t wait, download now and transform your career!

Pierian Training
Pierian Training
Pierian Training is a leading provider of high-quality technology training, with a focus on data science and cloud computing. Pierian Training offers live instructor-led training, self-paced online video courses, and private group and cohort training programs to support enterprises looking to upskill their employees.

You May Also Like

Data Science, Tutorials

Guide to NLTK – Natural Language Toolkit for Python

Introduction Natural Language Processing (NLP) lies at the heart of countless applications we use every day, from voice assistants to spam filters and machine translation. It allows machines to understand, interpret, and generate human language, bridging the gap between humans and computers. Within the vast landscape of NLP tools and techniques, the Natural Language Toolkit […]

Machine Learning, Tutorials

GridSearchCV with Scikit-Learn and Python

Introduction In the world of machine learning, finding the optimal set of hyperparameters for a model can significantly impact its performance and accuracy. However, searching through all possible combinations manually can be an incredibly time-consuming and error-prone process. This is where GridSearchCV, a powerful tool provided by Scikit-Learn library in Python, comes to the rescue. […]

Python Basics, Tutorials

Plotting Time Series in Python: A Complete Guide

Introduction Time series data is a type of data that is collected over time at regular intervals. It can be used to analyze trends, patterns, and behaviors over time. In order to effectively analyze time series data, it is important to visualize it in a way that is easy to understand. This is where plotting […]