Saving visualizations to files is an essential step when preparing them for use in reports, presentations, web pages, or emails. Matplotlib offers a direct method to store plots in various formats.
savefigThe primary function for saving plots in Matplotlib is savefig(). Whether you are using the state-based interface (pyplot or plt) or the object-oriented approach (working directly with Figure and Axes objects), the method is similar.
If you've been using pyplot commands like plt.plot() and plt.title(), you can save the current figure using plt.savefig():
import matplotlib.pyplot as plt
import numpy as np
# Sample data
x = np.linspace(0, 10, 100)
y = np.sin(x)
# Create plot
plt.plot(x, y, label='Sine Wave')
plt.title('Simple Sine Wave')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
# Save the figure to a PNG file
plt.savefig('sine_wave_plot.png')
# Optionally display the plot (often done after saving)
# plt.show()
If you have explicitly created a Figure object (often named fig), you use the figure's own savefig() method:
import matplotlib.pyplot as plt
import numpy as np
# Sample data
x = np.linspace(0, 10, 100)
y = np.sin(x)
# Create figure and axes using the object-oriented approach
fig, ax = plt.subplots()
# Plot on the axes
ax.plot(x, y, label='Sine Wave')
ax.set_title('Simple Sine Wave (OO)')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.legend()
# Save the figure using the figure object's method
fig.savefig('sine_wave_plot_oo.png')
# Optionally display the plot
# plt.show()
In both cases, the main argument to savefig() is the desired filename, including the file extension. Matplotlib intelligently uses this extension to determine the output format.
Matplotlib supports numerous file formats. Here are some of the most frequently used ones:
.png..jpg or .jpeg..pdf..svg.The choice between raster (PNG, JPG) and vector (PDF, SVG) formats depends on how you intend to use the plot. We'll look at this choice more closely in the next section. For now, know that saving to any of these is as simple as changing the file extension in the savefig() command.
# Save as different formats
fig.savefig('sine_wave_plot.jpg')
fig.savefig('sine_wave_plot.pdf')
fig.savefig('sine_wave_plot.svg')
The savefig() function offers several arguments to control the output:
dpi (Dots Per Inch): This argument is relevant for raster formats (like PNG and JPG). It determines the resolution of the saved image. A higher DPI results in a higher-quality image but also a larger file size. Common values are 100, 300, or 600. The default is often controlled by Matplotlib's configuration (e.g., figure.dpi).
# Save a PNG with higher resolution
fig.savefig('sine_wave_plot_high_res.png', dpi=300)
bbox_inches='tight': This is a very useful option. It attempts to automatically adjust the bounding box of the saved figure to minimize whitespace around your plot elements (title, labels, plot area).
# Save with minimal whitespace
fig.savefig('sine_wave_plot_tight.png', bbox_inches='tight')
transparent=True: If saving to a format that supports transparency (like PNG or SVG), setting this to True will make the figure background transparent instead of the default white (or whatever the facecolor is set to). This is helpful when overlaying the plot on other backgrounds.
# Save with a transparent background
fig.savefig('sine_wave_plot_transparent.png', transparent=True)
facecolor and edgecolor: You can specify the background color of the figure when saving.
# Save with a light gray background
fig.savefig('sine_wave_plot_gray_bg.png', facecolor='#dee2e6')
savefig() vs. show()It's generally recommended to call savefig() before calling plt.show(). In some environments or backends, plt.show() might display the plot and then clear the figure object, meaning a subsequent savefig() call could result in a blank image. A typical workflow is:
savefig() to save the figure to a file.plt.show() to display the figure interactively (if needed).By mastering savefig(), you gain the ability to take your meticulously crafted Matplotlib and Seaborn visualizations out of your development environment and integrate them effectively into your final reports, papers, or presentations.
Was this section helpful?
© 2026 ApX Machine LearningEngineered with