Python_matplotlib保存矢量图

用python的matplotlib画出的图,一般是需要保存到本地使用的。

如果是用show()展出的图,再右键保存,这样的图是失帧而非矢量的。

Python_matplotlib保存矢量图_第1张图片

保存矢量图的方法是使用函数savefig(),官方资料:savefig()

可以看到它的参数还是很多的,但保存矢量图只需要三个参数,即fname, 文件名称,和dpi, the resolution in dots per inch (每英寸点的分辨率), 以及format, 文件格式。

一个完整的保存矢量图的代码为:

import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x1 = np.random.uniform(-10, 10, size=20)
x2 = np.random.uniform(-10, 10, size=20)
#print(x1)
#print(x2)
number = []
x11 = []
x12 = []
for i in range(20):
    number.append(i+1)
    x11.append(i+1)
    x12.append(i+1)
plt.figure(1)
# you can specify the marker size two ways directly:
plt.plot(number, x1, 'bo', markersize=20,label='a')  # blue circle with size 20
plt.plot(number, x2, 'ro', ms=10,label='b')  # ms is just an alias for markersize

lgnd=plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0,numpoints=1,fontsize=10)
lgnd.legendHandles[0]._legmarker.set_markersize(16)
lgnd.legendHandles[1]._legmarker.set_markersize(10)

plt.show()

fig.savefig('scatter.eps',dpi=600,format='eps')

保存矢量图的具体代码为最后一行 ,此处保存的名称为scatter,格式为eps,分辨率为600。

说明

1. savefig()的format参数指出后台支持的文件格式包含:.png, .pdf, .ps, .eps, .svg

但不限于这些,当输入一个错误的格式如.bmp,系统会显示错误,并提示其支持的格式:

支持的格式包括:.eps, .jpeg, .jpg, .pdf, .pgf, .png, .ps, .raw, .rgba, .svg, .svgz, .tif, .tiff

2. savefig()中的fname参数说明指出,format参数是可以省略的

Python_matplotlib保存矢量图_第2张图片

即当format未设置,而输入的fname包含文件格式的扩展时,保存的文件格式即为该扩展。

故上述的保存矢量图的代码可直接改为:

fig.savefig('scatter.eps',dpi=600)

效果不变。

3. dpi的数值设置

根据Wiley的关于图像的指导准则,一般折线图的dpi设置为600,而图像的dpi设置为300。

Python_matplotlib保存矢量图_第3张图片

具体的dpi可根据个人要求,一般为1200/ 600/ 300。 

最后需要说明的是,类似这样图例legend放在图像外侧时,如果不设置图像大小等参数,保存的图往往是不完整的,如上述代码保存的图像效果为:

Python_matplotlib保存矢量图_第4张图片

右侧图例未显示完整,如何解决这个 问题,会在下面博客中举例说明。

 

 

你可能感兴趣的:(Python)