Erl*_*gen 11 python matplotlib eps
我希望能够保存Matplotlib图并将它们直接添加为Microsoft Word文档中的矢量图形.但是,Word和Matplotlib支持的唯一格式是.eps,如果我尝试的话,Word中的轴文本完全丢失.我会给你看:
这是一个最小的工作示例脚本:
import matplotlib.pyplot as plt
import numpy as np
axes = plt.gca()
data = np.random.random((2, 100))
axes.plot(data[0, :], data[1, :])
Run Code Online (Sandbox Code Playgroud)
显然,Matplotlib在.eps文件中保存文本的方式与Word从.eps文件中读取文本的方式不兼容.导出的.eps文件在PS_View中看起来很好.
我可以想到两个解决方法,但我不知道如何实现它们或者在Matplotlib中它是否完全可行:
正如 sebacastroh 指出的那样,可以将 matplotlib 图形保存为svg
using plt.savefig()
,然后使用 Inkscape 进行svg
和之间的转换emf
。任何 Office 程序都可以轻松读取增强型元文件 (emf)。
\n这可以自动化,就像这样
import matplotlib.pyplot as plt\nimport numpy as np\nfrom subprocess import call\n\ndef saveEMF(filename):\n path_to_inkscape = "D:\\Path\\to\\Inkscape\\inkscape.exe"\n call([path_to_inkscape, "--file", filename, "--export-emf", filename[:-4]+".emf" ])\n\naxes = plt.gca()\ndata = np.random.random((2, 100))\naxes.plot(data[0, :], data[1, :])\nplt.title("some title")\nplt.xlabel(u"some x label [\xc2\xb5m]")\nplt.ylabel("some y label")\n\nfn = "data.svg"\nplt.savefig(fn)\nsaveEMF(fn)\n
Run Code Online (Sandbox Code Playgroud)\n\n保存也可能是有意义的saveEMF()
将函数外部保存在模块中以便始终可以使用它