【问题标题】:Converting text in Matplotlib when exporting .eps files导出 .eps 文件时在 Matplotlib 中转换文本
【发布时间】: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, :])

显然,Matplotlib 将文本保存在 .eps 文件中的方式与 Word 从 .eps 文件中读取文本的方式不兼容。导出的 .eps 文件在 PS_View 中看起来很好。

我可以想到两种解决方法,但我不知道如何实现它们,或者在 Matplotlib 中是否有可能:

  1. 矢量化文本,使其作为路径嵌入。 Matplotlib 的 SVG 后端通过将 rcParam 'svg.fonttype' 设置为 'path' 来支持这一点,但 ps 后端似乎并不直接支持。这将是理想的解决方法。有没有办法做到这一点?
  2. 在导出为 .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


【解决方案1】:

正如 sebacastroh 指出的那样,可以使用 plt.savefig() 将 matplotlib 图形保存为 svg,然后使用 Inkscape 在 svgemf 之间进行转换。任何 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() 函数外部保存在模块中以随时使用它也可能有意义。

【讨论】:

  • 虽然使用 Inkscape 从.svg 转换为.emf 有点棘手,但您的脚本非常方便,我可以确认它可以完美运行。谢谢!
  • 在 Inkscape 1.0 中,必须使用 --export-filename=foo.emf
猜你喜欢
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 2017-09-23
  • 2018-01-31
相关资源
最近更新 更多