Python matplotlib 如何把图表保存为图片文件(不弹窗显示)?

matplotlib 保存图表用 plt.savefig('plot.png'),支持 dpi、transparent 等参数。服务器无显示环境需切换 Agg 后端。本文介绍完整用法。

最佳实践
Python matplotlib 如何把图表保存为图片文件(不弹窗显示)?封面

plt.savefig('plot.png') 替代 plt.show()。服务器等无图形界面环境需要在导入 pyplot 前设置 matplotlib.use('Agg') 后端。

基本用法

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [2, 4, 6, 8])
plt.title("示例图表")

plt.savefig('plot.png')      # 保存为 PNG
plt.close()                  # 释放内存

格式由扩展名决定:.png.pdf.svg.jpg 等。

常用参数

plt.savefig('plot.png',
    dpi=300,             # 分辨率(默认 100,印刷用 300)
    bbox_inches='tight', # 裁掉多余白边
    transparent=True     # 透明背景
)

服务器环境(无显示器)

cannot connect to X server 或图保存不出来时,切换后端:

import matplotlib
matplotlib.use('Agg')    # 必须在 import pyplot 之前

import matplotlib.pyplot as plt
plt.plot([1, 2, 3])
plt.savefig('plot.png')

常见问题(FAQ)

Q:保存的图片是空白的?
A:plt.show() 会清空当前图,savefig 要在 show 之前调用;或直接不用 show。

Q:中文标题显示为方框?
A:中文字体没配置。设置 plt.rcParams['font.sans-serif'] 为系统中文字体(如 SimHei、WenQuanYi),并处理负号显示问题。

Q:批量生成图表内存越来越大?
A:每张图保存后调用 plt.close() 释放 figure,循环中不复用 figure。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台