In this Python tutorial, we will discuss **Matplotlib save as pdf** in python. Here we will cover different examples related to **saving plot as pdf using matplotlib**. And we will also cover the following topics:

- Matplotlib save as pdf
- Matplotlib savefig as pdf
- Matplotlib savefig pdf example
- Matplotlib savefig pdf dpi
- Matplotlib save pdf transparent background
- Matplotlib save graph as pdf
- Matplotlib save subplot to pdf
- Matplotlib savefig pdf cut off
- Matplotlib save pdf file
- Matplotlib savefig pdf multiple pages
- Matplotlib save table as pdf
- Matplotlib savefig pdf a4
- Matplotlib savefig pdf empty

## Matplotlib save as pdf

In this section, we are going to learn about how to save a plot or chart as a pdf file by using the matplotlib library. Firstly, we discuss what does **“pdf”** mean:

PDF format is used to save the files that can’t be modified. The biggest advantage of the PDF file is that it can be easily shared and printed.

**The following steps are used to save a plot or graph as pdf are outlined below:**

**Defining Libraries:**Import the important libraries which are required to save files as pdf and to define data (For data creation and manipulation: Numpy and Pandas, For data visualization: pyplot from matplotlib).**Define X and Y:**Define the data values used for the x-axis and y-axis.**Create a pLot:**By using**plot()**,**scatter()**,**bar()**, method you can create a plot or you can use any other method which ever you like.**Save as pdf:**By using**savefig()**method you can save a file into your system. Set**extension**of the file to**“pdf”**as your main aim is to save as pdf.**Generate Plot:**By using**show()**function, generate a plot to the user.

## Matplotlib savefig as pdf

To export a graph with matplotlib as a pdf file we have to call the **savefig()** method. The main objective of this method is to save a graph to your local system memory.

**The syntax of the savefig() method is as below:**

```
matplotlib.pyplot.savefig(fname, dpi=None,
facecolor='w',
edgecolor='w',
orientation='portrait',
papertype=None,
format=None,
transparent=False,
bbox_inches=None,
pad_inches=0.1,
frameon=None,
metadata=None)
```

**The parameters used are discussed as below:**

**fname:**specifies file name or file location.**dpi:**specifies No.of dots per inch or picture quality.**facecolor:**specifies the face color of the plot. By default, it is**“White”**.**edgecolor:**specifies the edge color of the plot. By default, it is**“White”**.**orientation:**specifies the orientation of the plot as Landscape or Portrait.**papertype:**specifies the type of paper such as “letter”, “legal”, “a0 to a10”, etc.**format:**specifies the extension of the file such as .**pdf**.**transparent:**to make the background of the image transparent.**bbox_inches:**specifies the portion of the plot to save. For a proper fitting set, it to**“tight”**.**pad_inches:**specifies space around the plot.**metadata:**specifies key/value pair to store in the plot metadata. Take data in the**dictionary**format.

## Matplotlib savefig pdf example

Let’s have a look at an example to understand the concept of saving a plot as a pdf file in matplotlib more clearly.

**Example:**

**# Import Library**
import matplotlib.pyplot as plt
**# Define Data**
x= [0, 1, 2, 3, 4, 5]
y= [1.5, 2, 3.6, 14, 2.5, 3.9]
**# Plot **
plt.plot(x,y)
**# Save as pdf**
plt.savefig('save as pdf.pdf')
**# Show image**
plt.show()

- In the above example, we firstly import
**matplotlib.pyplot**library. After that, we define data in x and y coordinates for plotting. **plot()**method is used to plot a chart.- After this, we use the
**savefig()**method to save plot figure in our project directory as a**pdf**file. - At last, we use the
**show()**method to generate a plot for the user in a window.

Read Python plot multiple lines using Matplotlib

## Matplotlib savefig pdf dpi

The **“dpi” **argument decides the number of dots per inch. The dot’s values are defined in pixels.

**The syntax is as given below:**

`matplotlib.pyplot.savefig(fname, dpi=None)`

**The arguments used are defined as below:**

**fname:**Name of file or location.**dpi:**specifies the quality of the plot.

**Let’s see an example where we save the plot with dpi:**

**# Import Library**
import matplotlib.pyplot as plt
import numpy as np
**# Define Data**
x = np.arange(0, 12, 0.2)
y = np.sin(x)
**# Plot figure**
plt.plot(x, y)
**# Save as pdf**
plt.savefig('save as dpi .pdf', dpi=120, format='pdf', bbox_inches='tight')
**# Generate Plot**
plt.show()

Here we pass the **dpi** argument to the **savefig()** method and set its value 120.

Read What is matplotlib inline

## Matplotlib save pdf transparent background

Here you will learn how to save files as a pdf with transparent background. You have to use a **savefig()** method to save a plot as a pdf file and pass an argument **transparent** and set its value to **True**.

**Example:**

The plot having** green background **color and you have to save it as a pdf file **without a Transparent** argument.

**# Import Library**
import matplotlib.pyplot as plt
**# Define Data**
student = [10, 5, 3, 2, 4]
weight = [35, 25, 20, 50, 43]
**# Define background color**
ax = plt.figure()
ax.set_facecolor('green')
**# Plot Graph**
plt.bar(weight,student)
**# Define axes label
**
plt.xlabel("Weight of the students")
plt.ylabel("Number of students")
**# Save as pdf
**
plt.savefig('save pdf without transparent argument.pdf')
**# Display Graph
**
plt.show()

In the above example, we plot a bar graph and save it in system local memory by using the **savefig()** method.

To show you a difference here we set the background color to **green**.

**Example:**

The plot having **green background **color and you have to save the pdf file with the **Transparent** argument.

**# Import Library**
import matplotlib.pyplot as plt
**# Define Data**
student = [10, 5, 3, 2, 4]
weight = [35, 25, 20, 50, 43]
**# Define background color**
ax = plt.figure()
ax.set_facecolor('green')
**# Plot Graph**
plt.bar(weight,student)
**# Define axes label**
plt.xlabel("Weight of the students")
plt.ylabel("Number of students")
**# Save as pdf
**
plt.savefig('save pdf with transparent argument.pdf',transparent = True)
**# Display Graph**
plt.show()

Here we pass the **transparent** as an argument to **savefig()** method and set its value to **True**.

Read Matplotlib plot bar chart

## Matplotlib save graph as pdf

Here we are going to learn how you can save bar graphs as a pdf file. For this firstly, you have to plot the bar chart and after that save it in pdf form.

**The syntax is as below:**

**# Plot graph**
matplotlib.pyplot.bar(x,y)
**# Save as pdf**
matplotlib.pyplot.savefig(fname)

**Let’s see an example related to a bar chart save as a pdf file:**

**# Import Library**
import matplotlib.pyplot as plt
import numpy as np
**# Define Data**
subjects = ['MATHS', 'SCIENCE', 'ENGLISH', 'USA ENGLISH', 'SOCIAL-SCIENCE']
data = [20, 7, 31, 25, 12]
**# Creating plot**
plt.bar(subjects, data)
**# save as pdf**
plt.savefig('save graph as pdf.pdf')
**# show plot
**
plt.show()

In the above example, we plot the bar chart by using the **plt.bar() **method and after that we use **plt.savefig()** method to save bar chart as a pdf file. So we set the extension to **.pdf**.

Read Matplotlib subplot tutorial

## Matplotlib save subplot to pdf

Here we will discuss how you can save subplots to a pdf file. By simply, using the **savefig()** method you can save it in a file. Take care of one thing, that you have to pass **.pdf** as an extension to the filename.

**Let’s have a look at an example:**

**# Importing Libraries**
import numpy as np
import matplotlib.pyplot as plt
**# Define Data**
x1= [0, 1, 2, 3, 4, 5]
y1= [0, 1.5, 2.3, 6.5, 15, 2.6]
x2= [2, 4, 6, 8]
y2= [3, 6, 9, 12]
x3= [2.3, 5.6, 4.6, 9.36, 5.6]
y3= [10, 5, 4, 6, 2]
x4= [7, 8, 15]
y4= [6, 12, 18]
fig, ax = plt.subplots(2, 2)
**# Set title**
ax[0, 0].set_title("Plot 1")
ax[0, 1].set_title("Plot 2")
ax[1, 0].set_title("Plot 3")
ax[1, 1].set_title("Plot 4")
**# Plot graph**
ax[0, 0].plot(x1, y1)
ax[0, 1].plot(x2, y2)
ax[1, 0].plot(x3, y3)
ax[1, 1].plot(x4,y4)
**# Save as pdf**
plt.savefig('save subplot as pdf.pdf')
**# Display Subplot**
fig.tight_layout()
plt.show()

- In the above example, we import important libraries such as
**matplotlib.pyplot**and**numpy**. - After this we define data to draw subplots in a figure area.
- Then we use
**set_title()**method to set different titles for each of the subplot. - By using
**savefig()**method we save subplots in a pdf file by passing extension**.pdf**to filename. - In last, we use
**tight_layout()**method for auto adjustment of subplots and**show()**method to generate subplots on user screen.

## Matplotlib savefig pdf cut off

When we save the plot into a pdf file we get an extra border or space along with the plot.

If you want to cut off the extra space pass the **bbox_inches** argument in the **savefig()** method and set its value to **‘tight’**.

**Let’s have a look at examples:**

**Example: When we normally save a plot into pdf file**

**Code:**

**# Import Library**
import matplotlib.pyplot as plt
import numpy as np
**# Define Data**
subjects = ['MATHS', 'SCIENCE', 'ENGLISH', 'HINDI', 'SOCIAL-SCIENCE']
data = [20, 7, 31, 25, 12]
**# Creating plot**
plt.pie(data, labels = subjects)
**# save as pdf**
plt.savefig('save as pdf without cutoff.pdf')
**# show plot**
plt.show()

In the above example, we plot the pie chart by using the **plt.pie()** method, and then by using the** plt.savefig()** method we save the plot as a pdf file.

**Output:**

**Example: When we save plot into pdf and also remove extra spacing **

**Code:**

**# Import Library
**
import matplotlib.pyplot as plt
import numpy as np
**# Define Data
**
subjects = ['MATHS', 'SCIENCE', 'ENGLISH', 'HINDI', 'SOCIAL-SCIENCE']
data = [20, 7, 31, 25, 12]
**# Creating plot**
plt.pie(data, labels = subjects)
**# save as pdf**
plt.savefig('save as pdf with cutoff.pdf', bbox_inches='tight')
**# show plot
**
plt.show()

In the above example, we plot the pie chart by using the** plt.pie() **method, and then by using the **plt.savefig()** method we save the plot as a pdf file.

We pass the** bbox_inches** as an argument and set its value to **‘tight’ **to get cut off the plot.

**Output:**

**Conclusion:** When we use bbox_inches as an argument in the savefig() method we get cut off of the plot.

Read Matplotlib subplots_adjust

## Matplotlib save pdf file

In matplotlib, the generated plot can be saved as a PDF file by using the **savefig()** method of **PdfPages** Class.

Firstly, you have to import the **matplotlib** library.

**The syntax is as given below:**

`from matplotlib.backends.backend_pdf import PdfPages `

Next, you have to implement PdfPages

**The syntax is as given below:**

`PdfPages(filename = None, keep_empty = True, metadata = None)`

**The above-used parameters are as given below:**

**filename:**specifies the name and location of the file you want to save as.**keep_empty:**It takes boolean values. If false, the empty PDF files delete automatically.**metadata:**It takes data in the form of dictionary. It has information like Title, Author, Subjects, Keywords, etc.

In last, PdfPages creates objects of a class.

**The following are the main functions used by class object:**

**get_pagecount():**This method returns the number of pages in pdf file.**close():**This method is used to close the object.**savefig():**This method is used to save a figure to the pdf file.

**Note: **Specify the format. As your main aim is pdf so use **.pdf** as an extension.

**Let’s see an example to have a better understanding:**

**# Import Libraries**
from matplotlib.backends.backend_pdf import PdfPages
import numpy as np
import matplotlib.pyplot as plt
**# Define Data**
X = np.arange(20)
Y = X**2
**# PdfPages method
**
pp = PdfPages('save as pdf file in matplotlib.pdf')
**# Plot graph**
plt.plot(X,Y)
**# Object of class
**
pp.savefig()
**# Close object**
pp.close()

- In this above example, we first import the
**PdfPages**library. **PdfPages()**method is used to save the plot as a pdf.- Next, we define data for plotting and use
**plt.plot()**method to plot graph. - Then we define
**savefig()**and**close()**as an object of the class

## Matplotlib savefig pdf multiple pages

If you want to save multiple plots in a single file, you have to use the **savefig()** method of the **PdfPages class**.

**Let’s see an example of multiple pages pdf:**

**# Import Library**
from matplotlib.backends.backend_pdf import PdfPages
import numpy as np
import matplotlib.pyplot as plt
**# Define Data**
x = np.arange(10)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
**# PdfPages()**
pdf = PdfPages('hi.pdf')
**# Create function**
def multiple_plot(X,Y):
plt.figure()
plt.clf()
plt.plot(X,Y)
plt.xlabel('x axis')
plt.ylabel('y axis')
pdf.savefig()
**# call function**
multiple_plot(x,y1)
multiple_plot(x,y2)
multiple_plot(x,y3)
**# class function**
pdf.close()

- In the above example, firstly we import important libraries
**PdfPages**,**numpy**, and**matplotlib.pyplot**. - After this, we define data that is used for plotting, and by using the
**PdfPages()**method we define the name of the file and set**.pdf**as an extension of the file. - We create user define function name as
**multiple_plot()**and in this we define**plot()**method**xlabel()**,**ylabel()**method and**savefig()**method of the class object. - Then we call the user-defined function to plot multiple graphs and the
**close()**method of the class object.

Here we save three different plots in a single pdf file instead of three separate files.

Read Matplotlib plot_date

## Matplotlib save table as pdf

If you want to create a table in matplotlib and save it as a pdf file. You have to perform the following steps:

- Import
**PdfPages**,**matplotlib.pyplot,**and**numpy**libraries. - Define
**col_names**and**data**. - Then set figsize by using
**plt.subplot()**method and set the**axis off**to invisible the axes. - Next by using
**plt.table()**method plot the table and pass the**cellText**,**colLabels**,**loc**, and,**colLoc**as an argument and set its value as**data,****col_names**,**center**, and**right**respectively. - Then use
**PdfPages()**method and pass the location of the file to save it as Pdf. - Then in the last call the
**savefig()**and**close()**method of the class object.

**Example:**

**# Import Libraries**
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
**# Define Data**
col_names = ["Col-1", "Col-2", "Col-3", "Col-4", "Col-5", "Col-6"]
data = np.random.randint(100, size=(30,6))
**# Plot table**
fig, ax = plt.subplots(1, figsize=(10,10))
ax.axis('off')
table = plt.table(cellText=data, colLabels=col_names,loc='center',colLoc='right')
**# save as Pdf**
pdf = PdfPages('save table as pdf.pdf')
pdf.savefig()
pdf.close()

## Matplotlib save vector as pdf

Firstly we have to understand what does vector means and how we have to plot vector in matplotlib.

A **vector** is an object that has both magnitude and direction.

Graphically we can plot a vector as a line segment whose length represents its magnitude and the arrow indicates the direction of the vector.

**In matplotlib to plot a vector field we have two methods which are described as follow:**

By using the **quiver()** method we can plot vector:

`matplotlib.pyplot.quiver(X,Y,U,V,**kw)`

**The parameters used above are given as below:**

**X and Y:**specifies the location of the vector.**U and V:**specifies the direction of the vector.

By using the **streamplot()** method we can plot vector:

`matplotlib.pyplot.streamplot(X,Y,U,V,density=1,linewidth=none,color=None,**kw)`

**The parameters used above are given as below:**

**X and Y:**specifies 1D array spaced grid.**U and V:**specifies the velocity of each point.**Density:**specifies no. of vector per area of the plot.**Linewidth:**represent thickness.

**Let’s see an example of vector as pdf:**

**# Import libraries
**
import numpy as np
import matplotlib.pyplot as plt
**# Vector location**
X = [7]
Y = [1]
**# Directional vectors**
U = [5]
V = [3]
**
# Creating plot**
plt.quiver(X, Y, U, V)
**# Save as pdf**
plt.savefig('vector as pdf.pdf')
**# Show plot**
plt.show()

- In the above example, we firstly import
**matplotlib.pyplot**, and**numpy**library. - Then we define the Vector location and Direction of the vector.
- By using
**plt.quiver()**we plot a vector graph and we use the**plt.savefig()**method to save the generated plot into a pdf file.

Read Matplotlib scatter marker

## Matplotlib savefig pdf a4

If you want to save the plot on a4 size sheet you have to set the **papertype** to **a4** size and pass it to the **savefig()** method.

**Example:**

**# Import Library**
import matplotlib.pyplot as plt
import numpy as np
**# Define Data**
x = np.arange(0, 12, 0.2)
y = np.sin(x)
**# Plot figure**
plt.plot(x, y)
**# Save image **
plt.savefig('save as pdf on a4 size paper.pdf', papertype='a4')
**# Generate Plot**
plt.show()

Here we pass the **papertype **argument to the **savefig()** method and set its value to** a4**.

**Note: **This papertype argument only works on editors having versions older than 3.3 otherwise, you will have a warning like below:

Read Matplotlib title font size

## Matplotlib savefig pdf empty

Here we are going to discuss a very common issue that was faced by many new matplotlib learners.

The** issue** is that when a user plots a graph in matplotlib and tries to save it as a PDF file in their local system they get an empty file.

**Let’s see an example where you find this issue:**

**# Import Library**
import matplotlib.pyplot as plt
**# Define Data**
x= [0, 1, 2, 3, 4, 5]
y= [1.5, 2, 3.6, 14, 2.5, 3.9]
**# Plot **
plt.scatter(x,y)
**# Show plot**
plt.show()
**# Save as pdf**
plt.savefig('save as pdf.pdf')

- In the above example, we firstly import
**matplotlib.pyplot**library. - After this, we define data coordinates and use
**plt.scatter()**method to draw a scatter plot. - After this we use
**plt.show()**method to visualize the plot on the screen. - Finally, we use
**plt.savefig()**method to save your plot as an image.

Instead of getting the plot in the Pdf file, we get an empty pdf.

**Solution:**

Now I tell you the solution to solve this problem. The solution is that you have to call **plt.show()** method after the **plt.savefig()** method.

**Let’s have a look at a solution code:**

**# Import Library**
import matplotlib.pyplot as plt
**# Define Data**
x= [0, 1, 2, 3, 4, 5]
y= [1.5, 2, 3.6, 14, 2.5, 3.9]
**# Plot **
plt.scatter(x,y)
**# Save as pdf**
plt.savefig('Pdf file consist plot.pdf')
**# Show plot**
plt.show()

You may like the following tutorials:

- Matplotlib default figure size
- Matplotlib savefig blank image
- Matplotlib save as png
- Matplotlib two y axes

In this Python tutorial, we have discussed the **“Matplotlib save as pdf”** and we have also covered some examples related to it. These are the following topics that we have discussed in this tutorial.

- Matplotlib save as pdf
- Matplotlib savefig as pdf
- Matplotlib savefig pdf example
- Matplotlib savefig pdf dpi
- Matplotlib save pdf transparent background
- Matplotlib save graph as pdf
- Matplotlib save subplot to pdf
- Matplotlib savefig pdf cut off
- Matplotlib save pdf file
- Matplotlib savefig pdf multiple pages
- Matplotlib save table as pdf
- Matplotlib savefig pdf a4
- Matplotlib savefig pdf empty

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.