python - matplotlib:创建不合并图像对象的 PDF

标签 python pdf matplotlib

我喜欢使用 matplotlib 创建 PDF,然后我会经常使用 Adob​​e Illustrator 或 Inkscape 进行调整。不幸的是,当 matplotlib 将图形保存为 PDF 时,它会将多个图像组合成一个对象。

例如下面的代码

import matplotlib.pyplot as plt
import numpy as np

im = np.random.rand(10, 10) * 255.0
fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
ax.imshow(im, extent = [0,10,0,10])
ax.imshow(im, extent = [12,22,0,10])
ax.set_xlim(-2,24)
fig.savefig('images_get_combined.pdf')

创建以下 PDF(在我手动转换为 PNG 后,我可以将其发布在这里) enter image description here 当我在 Adob​​e Illustrator 中打开 images_get_combined.pdf 时,两个图像合并为一个图像。我无法将一张图片相对于另一张图片移动。

我尝试使用 BboxImage 解决这个问题,但如本 bug report 所示, BboxImage 与 PDF 后端不兼容。也许带有 BboxImage 错误的 PDF 后端会得到解决,但我想知道是否有另一种方法可以使 PDF 后端单独保存每个图像。

最佳答案

您可以尝试另存为多页PDF:

import numpy as np
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt

im = np.random.rand(10, 10) * 255.0
with PdfPages('images_get_combined.pdf') as pdf:
    fig = plt.figure()
    ax = fig.add_axes([0.1,0.1,0.8,0.8])
    ax.imshow(im, extent = [0,10,0,10])
    pdf.savefig()
    plt.close()
    fig = plt.figure()
    ax = fig.add_axes([0.1,0.1,0.8,0.8])
    ax.imshow(im, extent = [12,22,0,10])
    pdf.savefig()
    plt.close()

另见 Multipage PDF来自 matplotlib 文档的示例。

关于python - matplotlib:创建不合并图像对象的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27473107/

相关文章:

python - 是否存在用于读取行然后拆分它们的快速 Python 内置方法?

javascript - 在 IE 11 中显示二进制文件 (pdf)

python - 有什么方法可以将 seaborn 中的颜色条 (cbar) 更改为图例(对于二进制热图)?

python - Pandas 条形图中带有黑色边框的白色误差条

python - 返回图像的函数的类型提示是什么?

python - Python继承简单问题

python sdist recursive-include 文件夹,安装后在哪里?

c# - 在 C# 和可搜索的 PDF 中更正希伯来语字符序列

java - 将 XLSX 转换为 XSL-FO 到 PDF

python - 无法在Python中安装模块