Export Matplotlib Charts to a PDF

In this short guide, you’ll see how to export Matplotlib charts to a PDF file.

More specifically, you’ll observe how to export scatter and line charts into a PDF file.

The Dataset used for the Scatter Chart

Let’s say that you want to display the relationship between two variables:

  • unemployment_rate
  • index_price

You may then use a scatter diagram to depict such a relationship.

Here is an example of a dataset that you may use:

unemployment_rateindex_price
6.11500
5.81520
5.71525
5.71523
5.81515
5.61540
5.51545
5.31560
5.21555
5.21565

You can then capture the above data in Python using Pandas DataFrame:

import pandas as pd

data_1 = {
"unemployment_rate": [6.1, 5.8, 5.7, 5.7, 5.8, 5.6, 5.5, 5.3, 5.2, 5.2],
"index_price": [1500, 1520, 1525, 1523, 1515, 1540, 1545, 1560, 1555, 1565],
}

df_1 = pd.DataFrame(data_1)
print(df_1)

Let’s now review the second dataset.

The Dataset used for the Line Chart

Similarly, you may want to capture the trend overtime for the following variables:

  • year
  • unemployment_rate

Line charts are useful for such situations. Here is the data that you may use:

yearunemployment_rate
19209.8
193012
19408
19507.2
19606.9
19707
19806.5
19906.2
20005.5
20106.3

You can then apply this code to create the second DataFrame:

import pandas as pd

data_2 = {
"year": [1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010],
"unemployment_rate": [9.8, 12, 8, 7.2, 6.9, 7, 6.5, 6.2, 5.5, 6.3],
}

df_2 = pd.DataFrame(data_2)
print(df_2)

Create the Scatter Chart

Create the scatter chart using the first DataFrame:

import pandas as pd
import matplotlib.pyplot as plt

data_1 = {
"unemployment_rate": [6.1, 5.8, 5.7, 5.7, 5.8, 5.6, 5.5, 5.3, 5.2, 5.2],
"index_price": [1500, 1520, 1525, 1523, 1515, 1540, 1545, 1560, 1555, 1565],
}

df_1 = pd.DataFrame(data_1)

plt.scatter(df_1["unemployment_rate"], df_1["index_price"], color="green")
plt.title("Unemployment Rate Vs Index Price", fontsize=14)
plt.xlabel("Unemployment Rate", fontsize=14)
plt.ylabel("Index Price", fontsize=14)
plt.grid(True)
plt.show()

Create the Line Chart

Next, create the line chart using the second DataFrame:

import pandas as pd
import matplotlib.pyplot as plt

data_2 = {
"year": [1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010],
"unemployment_rate": [9.8, 12, 8, 7.2, 6.9, 7, 6.5, 6.2, 5.5, 6.3],
}

df_2 = pd.DataFrame(data_2)

plt.plot(df_2["year"], df_2["unemployment_rate"], color="red", marker="o")
plt.title("Unemployment Rate Vs Year", fontsize=14)
plt.xlabel("Year", fontsize=14)
plt.ylabel("Unemployment Rate", fontsize=14)
plt.grid(True)
plt.show()

In the final section of this guide, you’ll see how to put together all the needed components in order to export the Matplotlib charts to a PDF.

Export the Matplotlib Charts to a PDF

To export the Matplotlib charts to a PDF, you’ll first need to import the Matplotlib module as follows:

from matplotlib.backends.backend_pdf import PdfPages

You’ll also have to specify the path where you’d like to export the PDF file. Here is an example of a path (where the file name is “charts” and the file extension is .pdf):

C:\Users\Ron\Desktop\charts.pdf

Modify that path to the location where you’d like to store the PDF file on your computer.

Putting all the components together:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

data_1 = {
"unemployment_rate": [6.1, 5.8, 5.7, 5.7, 5.8, 5.6, 5.5, 5.3, 5.2, 5.2],
"index_price": [1500, 1520, 1525, 1523, 1515, 1540, 1545, 1560, 1555, 1565],
}

df_1 = pd.DataFrame(data_1)

data_2 = {
"year": [1920, 1930, 1940, 1950, 1960, 1970, 1980, 1990, 2000, 2010],
"unemployment_rate": [9.8, 12, 8, 7.2, 6.9, 7, 6.5, 6.2, 5.5, 6.3],
}

df_2 = pd.DataFrame(data_2)

with PdfPages(r"C:\Users\Ron\Desktop\charts.pdf") as export_pdf:
plt.scatter(df_1["unemployment_rate"], df_1["index_price"], color="green")
plt.title("Unemployment Rate Vs Index Price", fontsize=14)
plt.xlabel("Unemployment Rate", fontsize=14)
plt.ylabel("Index Price", fontsize=14)
plt.grid(True)
export_pdf.savefig()
plt.close()

plt.plot(df_2["year"], df_2["unemployment_rate"], color="red", marker="o")
plt.title("Unemployment Rate Vs Year", fontsize=14)
plt.xlabel("Year", fontsize=14)
plt.ylabel("Unemployment Rate", fontsize=14)
plt.grid(True)
export_pdf.savefig()
plt.close()

Once you run the above code, a new PDF file (called charts) would be created at your specified location.

Finally, you may want to check the following guide to learn more about creating Matplotlib charts in Python.

Leave a Comment