gpt4 book ai didi

python - 导出 .eps 文件时在 Matplotlib 中转换文本

转载 作者:太空狗 更新时间:2023-10-29 18:09:24 26 4
gpt4 key购买 nike

我希望能够保存 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 时对文本进行栅格化。这将是一个不太理想的解决方法。这可以做到吗?

最佳答案

正如 sebacastroh 指出的那样,可以使用 plt.savefig() 将 matplotlib 图保存为 svg,然后使用 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() 函数从外部保存在模块中以使其始终可用也是有意义的。

关于python - 导出 .eps 文件时在 Matplotlib 中转换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24425337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com