当前位置:首页>python>用Python做科研级画图——第一张图:10行跑通并保存

用Python做科研级画图——第一张图:10行跑通并保存

  • 2026-09-29 23:37:14
用Python做科研级画图——第一张图:10行跑通并保存

大家好,我是你们的博士学长。如果你已经按上一篇把环境搭好了,那么恭喜你:你已经跨过了“最容易劝退新手”的第一关。

这一篇我们不讲复杂排版,只做一件事——

用最少的代码,画出你的第一张图,并且把它稳稳保存到本地。

很多人学画图卡住不是因为不会画,而是因为:

1.运行能显示,但保存出来是空白/被裁切;

2.保存出来发虚、像截图;

3.文件不知道保存到哪里了;

4.每次改一点都要重来,越改越乱;

……

所以这篇我按“科研最实用”的标准写:先跑通 + 可复制 + 可保存 + 不容易踩坑。

1、先给你 10 行:复制就能跑通并保存

你现在打开PyCharm,新建一个 first_plot.py,把下面这段复制进去:

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(0, 10, 200)

y = np.sin(x)

plt.plot(x, y)

plt.savefig("first_plot.png", dpi=200, bbox_inches="tight")

plt.close()

运行之后,你会在当前目录看到一张图:first_plot.png。

到这一步你已经完成了 80% 的目标:从0到1,能稳定出图。

2、这10行里,最关键的是哪两行?

你以后画任何图,最终都绕不开这两行:

1)plt.savefig(...) —— 你交付成果的核心

这一行决定:图片存在哪、清不清晰、会不会被裁切。

我建议你先记住这个“稳妥组合”:

plt.savefig("xxx.png", dpi=200, bbox_inches="tight")

dpi=200:让图片更清晰(后面我们会讲论文级 600/900/1200)

bbox_inches="tight":自动裁切掉多余白边,避免标题/刻度被截断(但也有坑,后面会专门讲)

2)plt.close() —— 防止你越画越乱

如果你在循环里画多张图、不close,图像对象会越堆越多,出现内存越来越大、后面的图可能叠在一起、Jupyter 里更容易混乱的问题。

所以建议你养成习惯:保存完就close。

3、你最可能踩的 4 个坑

坑1:图能显示,但保存出来是空白

常见于你用了 plt.show() 并且后面才保存。稳妥做法是:

先 savefig 再 show(如果你确实需要 show)

坑2:保存出来发虚,看起来像糊的

大概率是 dpi 太低。你可以先把 dpi=200 改成 dpi=300 试试。

科研常用:

日常检查:200–300

投稿/印刷:600 起步(具体看期刊要求)

坑3:我找不到保存的图片在哪

"first_plot.png" 是相对路径,会保存到你运行脚本的当前目录。

最稳的方式是写绝对路径:

plt.savefig(r"你的路径\first_plot.png", dpi=200, bbox_inches="tight")

坑4:中文标题一加就变成方块/乱码

这是字体问题,新手非常常见。

下一篇我会专门写“中文字体+负号显示”的最稳方案,保证你一次搞定。

4、给你一个“更像科研”的版本:加上标题、坐标轴、网格

当你第一张图能稳定保存后,我们再加一点最常用的“表达元素”,仍然保持短小

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(0, 10, 200)

y = np.sin(x)

plt.figure(figsize=(6, 4))

plt.plot(x, y, linewidth=2)

plt.xlabel("x")

plt.ylabel("sin(x)")

plt.title("My First Figure")

plt.grid(alpha=0.3)

plt.savefig("first_plot_v2.png", dpi=300, bbox_inches="tight")

plt.close()

你会发现:

加了 figsize,你就开始掌控“图的大小”;

加了标签和标题,图就开始“像一张科研图”;

保存用 dpi=300,清晰度明显更好。

第一张图的意义不在于画得多漂亮,而在于你建立了一个稳定的出图闭环——能跑通、能保存、能复用,后面的所有进阶都从这个闭环长出来。

最新文章

随机文章