我希望能够保存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, :])
显然,Matplotlib在.eps文件中保存文本的方式与Word从.eps文件中读取文本的方式不兼容。导出的.eps文件在PS_View中看起来很好。
我可以想到两个解决方法,但我不知道如何实现它们,或者在Matplotlib中它是否完全可能:
答案 0 :(得分:2)
正如sebacastroh指出的那样,可以使用svg
将matplotlib图保存为plt.savefig()
,然后使用Inkscape在svg
和emf
之间进行转换。任何Office程序都可以轻松读取增强的元文件(emf)
这可以自动化,如此
import matplotlib.pyplot as plt
import numpy as np
from subprocess import call
def saveEMF(filename):
path_to_inkscape = "D:\Path\to\Inkscape\inkscape.exe"
call([path_to_inkscape, "--file", filename, "--export-emf", filename[:-4]+".emf" ])
axes = plt.gca()
data = np.random.random((2, 100))
axes.plot(data[0, :], data[1, :])
plt.title("some title")
plt.xlabel(u"some x label [µm]")
plt.ylabel("some y label")
fn = "data.svg"
plt.savefig(fn)
saveEMF(fn)
将saveEMF()
函数保存在模块外部也可以随时掌握它。