Python绘图之Matplotlib保存数据图

本文最后更新于:3 个月前

使用Matplotlib绘图后,我们只需再增加一行代码,就可以把图片存为我们需要的格式。老规矩,先看一个简单的示例:

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 4, 5, 6, 7]

plt.scatter(x, y, color='g', marker='o')

plt.savefig('./0.jpg')

运行代码之后,就会生成一个名为 0.jpg 的图片,如图:

上面,我们通过 plt.savefig('./0.jpg') 这一行代码把数据图保存成了一个 jpg 格式的图片。但是,在SCI论文中,通常会对图片的大小、分辨率、格式有所要求;因此,我们需要通过设置,使其保存为我们所需要的图片。

1. 设置图片的尺寸

图片的尺寸大小通过以下代码即可设置:

1
plt.figure(figsize=(8, 6))

完整代码示例:

1
2
3
4
5
6
7
8
9
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 4, 5, 6, 7]

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

plt.scatter(x, y, color='g', marker='o')
plt.savefig('./1.jpg')

PS:
- 上述代码中,通过 figsize 来控制图片尺寸,第一个参数8是图片的宽度,第二个参数6是图片的高度。
- Matplotlib 中尺寸的单位为 英寸,以厘米为单位时只需要将数值除以2.54即可。例如:要设置成 8×6 厘米,代码则改成 plt.figure(figsize=(8/2.54, 6/2.54))

2. 设置图片的分辨率

在SCI论文中,一般要求图片分辨率需要在 300 dpi 以上。在Matplotlib中设置图片的分辨率只需在 plt.savefig() 中加上一个 dpi 参数即可:

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 4, 5, 6, 7]

plt.figure(figsize=(8, 6))
plt.scatter(x, y, color='g', marker='o')
plt.savefig('./2.jpg', dpi=500)

3. 设置图片的格式

Matplotlib支持的位图和矢量图格式有:jpeg, jpg, png, tif, tiff, svg, svgz, eps, pdf, pgf, ps, raw, rgba等,只需要修改保存文件名的扩展名即可,例如保存为tif格式:plt.savefig('./XXX.tif')

4. 去除图片四周多余的空白(白边)

去除多余白边只需在使用 plt.savefig() 之前添加一行:

1
plt.tight_layout()

效果如下:

有白边
有白边
无白边
无白边

完整示例

1
2
3
4
5
6
7
8
9
10
from numpy.core.fromnumeric import size

x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 4, 5, 6, 7]

plt.figure(figsize=(8, 6))
plt.scatter(x, y, color='g', marker='o')

plt.tight_layout()
plt.savefig('./test.tif', dpi=500)