如何将 Matplotlib 图形导出为 PDF-1.3?

问题描述 投票:0回答:1

将绘图保存为 PDF 时,Matplotlib 会根据 PDF 1.4 标准生成文件。 (您可以通过在文本编辑器中打开文件来检查 PDF 版本)。

但是,当我在 Microsoft PowerPoint 和其他 MS Office 工具中使用此类 PDF,然后再次将 MS 文档导出为 PDF 时,我遇到了问题。最值得注意的是,我丢失了透明颜色的区域,这些区域变成了完全白色。显然Microsoft PDF引擎似乎是瓶颈(到目前为止我还没有找到改变Microsoft PDF引擎的方法)。

我可以使用以下代码在最近的 MacOS 上重现该问题:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.bar([1, 2, 3], [224, 620, 425], 
       facecolor=(0.3,0.7,0.9,0.3), 
       ec='k')
plt.savefig("test.pdf")

enter image description here

我发现可以通过将 PDF 转换为 PDF-1.3 版本来解决该问题。我可以通过在导出设置中选择 PDF/X-1a 或 PDF/X-3 标准来使用 Adobe Illustrator 来完成此操作。

我的问题

  • 如何在 Matplotlib 中强制执行 PDF-1.3 格式?
  • 如何解决这个透明度问题?

我尝试将图像保存为 SVG。然而,我也遇到了类似的问题,在某些情况下透明度会丢失。 EPS 不支持透明面颜色。另外,我不想将图像导出为光栅化格式。

python matplotlib transparency
1个回答
0
投票

文档中,matplotlib.pyplot.savefig 采用透明度和后端参数,可能会对您有所帮助。此外,它还需要一个格式参数,以便您可以将图形保存为 png 来查看它是否有效(如果这是您的选择)。你可以尝试这样称呼它:

plt.savefig("test.pdf", format="png")
© www.soinside.com 2019 - 2024. All rights reserved.