python之matplotlib矢量图svg emf
作者:richardxp888
python matplotlib矢量图svg emf
由于要用word写论文,插入图片需要矢量图格式 emf
,那么首先,要利用matplotlib画矢量图 svg
格式。
import matplotlib.pyplot as plt def plot_learning_curve(X_train, X_valid, y_train, y_valid): plt.plot([i for i in range(1, len(X_train) + 1)], y_train, label='Train') plt.plot([i for i in range(1, len(X_train) + 1)], y_valid, label='Valid') plt.legend() plt.axis([0, len(X_train) + 1, 0, 20]) plt.savefig("test.svg", format="svg")
先利用上述代码,生成 svg
格式的矢量图,然后再使用在线网站转化为word能用的矢量图格式 emf
。
常用的图片格式解释:
fig
:matlab 默认的图片保存格式,在其他软件上一般不可用,可视为矢量图。eps
: 矢量图,适用于 LaTex。svg
:指可伸缩矢量图形 (Scalable Vector Graphics)emf
:矢量图,适合 Word。jpg
:位图,很古老的图片格式,同时也几乎是最常用的图片格式。bmp
:位图,未压缩。pdf
:直接输出为 pdf。png
:位图,无损压缩
使用python制作矢量图
Get一个使用python制作矢量图的新技能:
Matplotlib远比我们想象的强大,而这只是众多python强大的包中的一个,不愧是群英荟萃。
绘图后端我们一般是看不见的,matplotlib有两种后端:
用户界面后端(用于pygtk、wxpython、tkinter、qt4或macosx;也称为“交互式后端”)和硬拷贝后端制作图像文件(PNG, SVG, PDF, PS;也称为“非交互式后端”)即Renderer。
介绍具体如下表:
对于渲染引擎(renderer),还可以区分矢量渲染器(vector)和光栅渲染器(raster)。矢量图形语言发出“从这一点画一条线到这一点”这样的绘图命令,因此是无标度的,光栅后端生成直线的像素表示,其精度取决于DPI设置。
- 可以看到位图后端有1种:AGG、
- 矢量图的后端有3种:PS、PDF、SVG
- 还有一个同时支持两者的:Cairo
今天我们试一下SVG
正文:
代码其实很简单:
第一步
注意顺序,设置后端参数必须在引入pyplot之前。
import matplotlib matplotlib.rcParams['backend'] = 'SVG' import matplotlib.pyplot as plt plt.plot([1,2,3]) plt.savefig('kankan.svg',format='svg')
在相应目录将会生成kankan.svg文件。
第二步
上述文件一般无法直接打开,需要使用相应的软件,我用的是Inkscape,百度一下下载安装即可。
文件–>打开,选定第一步保存的文件,打开后如下图:
第三步
如果对图片没有其他编辑需求,直接另存为:增强型图文文件:*.emf
随后就可以在word或者ppt中将保存好的emf图片插入。
对比一下直接保存png图片和emf文件:
左边是emf图元文件,右边是png。可以吧,矢量图永远都不会模糊,尤其在放大的情况下,优势更明显。
当然,一般情况只要png能满足我们的需求那么就用png,毕竟方便很多。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。