Python matplotlib保存高清图片:dpi与矢量图设置
Python matplotlib保存的图片发报告模糊?详解savefig的dpi参数、矢量图SVG/PDF导出、透明背景和图片尺寸控制,让图表打印不糊。
场景痛点
用matplotlib画完图,保存成PNG贴到PPT里,放大后边缘锯齿严重,投到大屏幕上全是马赛克。直接截图更糊。根因是保存时dpi默认只有100,图片尺寸也小。这篇讲怎么调dpi、怎么存矢量图、怎么控制画布尺寸,让导出的图表打印和投屏都清晰。
用到的库
pip install matplotlib
完整代码
# 导入库
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
# 解决中文乱码
matplotlib.rcParams["font.sans-serif"] = ["SimHei", "Microsoft YaHei", "Arial Unicode MS"]
matplotlib.rcParams["axes.unicode_minus"] = False
def draw_high_quality():
months = ["1月", "2月", "3月", "4月", "5月", "6月"]
values = [120, 150, 180, 160, 210, 260]
# figsize 单位是英寸,8x5 英寸在 dpi=300 下就是 2400x1500 像素
fig, ax = plt.subplots(figsize=(8, 5), dpi=100)
ax.bar(months, values, color="#4C72B0")
ax.set_title("高清图表示例", fontsize=14)
ax.set_ylabel("数值")
plt.tight_layout()
# 1. 保存高清PNG,dpi=300 满足印刷要求
plt.savefig("hd_output.png", dpi=300, bbox_inches="tight")
# 2. 保存矢量图SVG,无限放大不模糊,适合PPT和印刷
plt.savefig("hd_output.svg", bbox_inches="tight")
# 3. 保存PDF矢量图,适合插入Word论文
plt.savefig("hd_output.pdf", bbox_inches="tight")
# 4. 保存透明背景PNG,方便叠加到深色PPT背景
plt.savefig("hd_transparent.png", dpi=300, transparent=True, bbox_inches="tight")
plt.close()
print("已生成:hd_output.png / .svg / .pdf / hd_transparent.png")
if __name__ == "__main__":
draw_high_quality()
代码讲解
figsize=(8, 5)单位是英寸,8×5英寸在300dpi下输出2400×1500像素,A4纸印刷绰绰有余。savefig(dpi=300)把PNG分辨率从默认100提到300,屏幕显示和打印都够清晰。bbox_inches="tight"自动裁掉图片四周多余的白边,否则保存的图上下左右有大片空白。- 存成
.svg或.pdf是矢量格式,放大多少倍都不会模糊,PPT里插图首选SVG。 transparent=True让背景变透明,叠加到深色PPT模板上不会出现白底方块。
运行结果
当前目录生成四个文件:hd_output.png(300dpi高清位图)、hd_output.svg(矢量图)、hd_output.pdf(矢量PDF)、hd_transparent.png(透明背景PNG)。用图片查看器打开PNG,放大到200%确认边缘无锯齿;SVG文件拖进浏览器可无限缩放。
注意事项
savefig必须在plt.show()之前调用,如果先show再save,存出来是空白图。- dpi不是越大越好,屏幕展示用150就够,印刷用300,存到600文件会很大且没有实际增益。
- 矢量图SVG在旧版PPT里可能不兼容,重要场合同时存一份PNG兜底。
- 保存路径含中文时,Windows下用绝对路径或先切换工作目录,相对路径一般也没问题。

更新时间:2026-09-14 20:29:59
上一篇:Python matplotlib画散点图:分析两组数据相关性