当前位置:首页>python>用Python做科研级画图——保存高清图:dpi/尺寸/裁切/矢量

用Python做科研级画图——保存高清图:dpi/尺寸/裁切/矢量

  • 2026-08-22 22:50:14
用Python做科研级画图——保存高清图:dpi/尺寸/裁切/矢量

大家好,我是你们的小帅学长。

科研出图的质量,不只取决于你画得好不好,更取决于你保存得对不对。

所以这一篇我把保存高清图最关键的四个变量一次讲清:

dpi(清晰度的核心)

尺寸(论文排版的核心)

裁切(不丢字、不乱留白)

矢量(线条图/示意图的终极选择)

01.科研出图要先“定尺寸”,再“定dpi”

很多新手习惯只改 dpi,结果越改越不对。

真正稳的顺序是:先确定图片物理尺寸(宽高),再设置 dpi。

排版关心的是这张图在版面上占多宽,而不是你在屏幕上看起来多大。

02.dpi到底是什么?你该怎么选?

dpi = 每英寸多少像素(dots per inch),它决定同样尺寸下,图像有多少像素,从而决定清晰度。

日常检查:dpi=200–300

大多数期刊位图最低门槛:dpi=300

印刷级/细节多/文字多:dpi=600

特别精细图:dpi=900–1200

注意:dpi 越大文件越大、生成越慢,不是越大越好。你要的是“达标且清晰”,不是“无限大”。

03.尺寸怎么选?

Matplotlib 里的尺寸单位通常是 英寸(inch):figsize=(width, height)。

你看到的常用格式(个人经验):

单栏图:宽约 3.3–3.5 inch

双栏图:宽约 6.8–7.2 inch

高度看内容,通常 2.5–4.5 inch 比较常见

你不需要死记具体数值,但要记住核心:

你的图最终是要塞进版面的;

你现在就“按版面尺寸做图”,后面就少返工。

举个通用例子:

单栏图:

fig, ax = plt.subplots(figsize=(3.5, 2.6))

双栏图:

fig, ax = plt.subplots(figsize=(7.0, 3.5))

04.裁切:bbox_inches="tight" 

你肯定遇到过:

保存后标题被截掉;

坐标轴刻度被截掉;

图例跑出画面外。

这时候很多人第一反应是乱调 figsize,但更直接的解法往往是:裁切参数。

最常用(也最稳)的保存写法:

fig.savefig("fig.jpg", dpi=300, bbox_inches="tight")

bbox_inches="tight" 会自动把多余白边裁掉,并尽量把所有元素装进去。这对“标题/刻度被截断”非常有效。

但它也有一个典型坑,当你图里有“超出坐标轴范围的注释/箭头/外置图例”时,tight 有时会裁得过紧或过奇怪。

这时你可以加一点“缓冲边距”:

fig.savefig("fig.jpg", dpi=300, bbox_inches="tight", pad_inches=0.1)

05.JPG/PNG/TIFF:到底用哪个?

期刊一般需要 JPG。但严格来说,期刊常见的要求会更细。

给你一个“实用选择策略”(不纠结版本):

1)JPG

优点:体积小、兼容性强

缺点:有损压缩,线条/文字多时可能出现压缩痕迹

2)PNG

优点:无损压缩,文字/线条更干净

缺点:文件可能比 JPG 大

3)TIFF(很多期刊“正式交付”的常客)

优点:印刷友好,期刊常点名

缺点:文件大

06.给你一套“科研级保存模板”(JPG + PNG + PDF)

你以后只要改文件名,就能同时导出三种格式

import osimport numpy as npimport matplotlib.pyplot as pltOUT_DIR = r"D:\py_figs"os.makedirs(OUT_DIR, exist_ok=True)x = np.linspace(0, 10, 200)y = np.sin(x)fig, ax = plt.subplots(figsize=(3.5, 2.6)) # 单栏尺寸示例ax.plot(x, y, linewidth=2)ax.set_title("High-Quality Save Demo")ax.set_xlabel("x")ax.set_ylabel("sin(x)")ax.grid(alpha=0.3)base = os.path.join(OUT_DIR, "fig_save_demo")# 1) JPG(通用、体积小)fig.savefig(base + ".jpg", dpi=300, bbox_inches="tight")# 2) PNG(无损,更适合论文位图)fig.savefig(base + ".png", dpi=300, bbox_inches="tight")# 3) PDF(矢量:线条图首选)fig.savefig(base + ".pdf", bbox_inches="tight")plt.close(fig)

科研出图的质量,80%决定于保存策略——先定尺寸,再定dpi,裁切用tight+padding,线条图优先矢量;把这一套固定下来,你就能稳定输出“可投稿”的高清图。

下一篇我准备把“论文级排版”的另一块拼图补齐:

《文本系统:标题/注释/公式/中英混排》

——期待你的关注——

最新文章

随机文章