Matplotlib 保存图片函数
在 Matplotlib 中,我们可以使用 savefig() 这个函数来将图表保存成一张图片。
语法:
plt.savefig(
fname,
dpi=None,
format=None,
transparent=False,
bbox_inches=None,
pad_inches=0.1,
metadata=None,
)说明:
savefig() 函数接收以下常用参数。
fname(必选):用于指定保存的文件名(路径)。可以使用相对路径,也可以使用绝对路径。dpi(可选,默认:100):用于设置保存图片的分辨率,即每英寸的点数(dots per inch),默认值为 figure.dpi ( 通常是 100)。更高的 DPI 值会生成更高质量的图像,但文件大小也会增加。例如,dpi=300 会生成一个分辨率更高的图片。format(可选):用于指定保存的文件格式。常见的格式包括 'png'、'jpg'、'jpeg'、'pdf'、'svg'、'eps' 等。如果省略此参数,则会根据 fname 的文件扩展名自动推断格式。transparent(可选,默认:False):指定是否使背景透明,是一个布尔值。如果设置为 True,保存的图片将具有透明背景(仅适用于支持透明度的格式,如 PNG)。bbox_inches(可选):指定要保存的图表的范围(bounding box)。可以设置为 'tight' 来尝试去除图像周围不必要的空白区域,也可以是一个 Bbox 实例。pad_inches(可选,默认:0.1):指定在 bbox_inches 周围添加的填充空白大小(英寸)。
Matplotlib 保存图片示例
接下来,我们在当前项目下创建一个名为 “imgs” 的文件夹,项目结构如下图所示。

示例 1:Matplotlib 保存为 PNG 图片
import matplotlib.pyplot as plt
# 绘图
x = [1, 2, 3, 4]
y = [16, 15, 18, 17]
plt.plot(x, y)
# 显示
plt.savefig('imgs/plot.png')运行之后,我们可以发现 imgs 文件夹中多了一个 plot.png,项目结构如下图所示。此时打开 plot.png,效果如下图所示。


分析:
想要将图表保存为一张图片,除了使用 savefig() 函数之外,其实我们还可以使用 Matplotlib 自带的工具栏,也就是点击下图所示的按钮也可以实现。

示例 2:Matplotlib 保存为不同格式和设置 DPI
import matplotlib.pyplot as plt
# 设置
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False
# 绘图
x = [1, 2, 3, 4]
y = [16, 15, 18, 17]
plt.plot(x, y)
plt.title('一个简单的折线图')
plt.xlabel('X 轴')
plt.ylabel('Y 轴')
# 保存为 JPG 格式,设置 DPI 为 300
plt.savefig('imgs/plot.jpg', format='jpg', dpi=300)
# 保存为 SVG 格式,去除空白区域
plt.savefig('imgs/plot.svg', format='svg', bbox_inches='tight')
# 保存为 PDF 格式,背景透明
plt.savefig('imgs/plot.pdf', format='pdf', transparent=True)
# 显示(可选)
plt.show()运行之后,我们可以发现 imgs 文件夹中多了 plot.jpg、plot.svg、plot.pdf 这几个文件,项目结构如下图所示。

分析:
在这个例子中,我们给小伙伴们演示了如何将同一张图表保存为不同格式的文件,并设置了不同的参数。
文件格式选择建议
不同的文件格式,有不同的优缺点。
- JPG/JPEG: 有损压缩,适合保存照片等颜色丰富的图像,文件大小相对较小。
- PNG: 无损压缩,适合保存线条图、散点图等,支持透明背景。
- PDF: 矢量格式,适合保存需要高质量打印或缩放的图表。
- SVG: 矢量格式,适合在网页中使用,可以无损缩放。
