【发布时间】:2014-06-26 08:01:58
【问题描述】:
我希望能够保存 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, :])
- Here's the image I get 如果我使用图形的工具栏将绘图保存为 .png
- Here's the image I get 如果我将绘图保存为 .eps 并将其插入 Word。
显然,Matplotlib 将文本保存在 .eps 文件中的方式与 Word 从 .eps 文件中读取文本的方式不兼容。导出的 .eps 文件在 PS_View 中看起来很好。
我可以想到两种解决方法,但我不知道如何实现它们,或者在 Matplotlib 中是否有可能:
- 矢量化文本,使其作为路径嵌入。 Matplotlib 的 SVG 后端通过将 rcParam 'svg.fonttype' 设置为 'path' 来支持这一点,但 ps 后端似乎并不直接支持。这将是理想的解决方法。有没有办法做到这一点?
- 仅在导出为 .eps 时对文本进行光栅化。这将是一个不太理想的解决方法。可以这样做吗?
【问题讨论】:
-
我刚刚尝试在 Mac 上的最新 Microsoft Word (2016) 中嵌入
.eps文件,现在它似乎可以正确显示文本。 -
感谢您的测试,@mfitzp!自发布此问题以来,我的公司已从 Word 2010 升级到 Word 2013。我决定再试一次,但问题仍然存在。要么问题在 Word 2016 中得到解决,要么 Mac 版本的 Word 更好。尽管如此,我关于解决方法的问题(不是特定于平台的问题)仍然存在。
-
我可以确认它至少在 Windows 上的 Word 2013 上也不起作用(不幸的是无法测试 2016)。
-
你是如何保存图像的?你在用
savefig()吗? -
对于 Microsoft Word 2010 和 2013,我将图形保存为
.svg,然后使用名为 Inkscape 的免费软件将其转换为.emf。
标签: python matplotlib eps