【问题标题】:Graphs in a jupyter notebook to pdfjupyter笔记本中的图表到pdf
【发布时间】:2021-10-11 03:57:21
【问题描述】:

我有一个运行 python 的 jupyter 笔记本,我希望我构建的所有图形都输出到一个 pdf 文件中。有人知道怎么做吗?

亲切的问候,

【问题讨论】:

  • 如果你想包含整个笔记本(代码、文本和结果),你可以使用nbconvert,如果你真的只想要图像,你可以使用Microsoft Word等文档编辑器,只需右键单击图像,将其复制并粘贴到 Word 中(至少这在 Google Colab 中有效)。
  • 我只想要图表,但不想要全部复制粘贴。因为这是一个每月的过程。
  • 生成图后为什么不直接调用fig.savefig("filepath/filename.jpg")呢?

标签: python pdf graph jupyter-notebook file-conversion


【解决方案1】:

我找不到直接转换 pdf 中所有绘图的方法,但我要说的这种方法是完美的工作和测试。 首先,你需要导入 matplotlib。

import matplotlib.pyplot as plt

现在在所有绘制图表的 jupyter notebook 块中编写这段代码。所有块的图像名称应该不同,您可以保存为 plt1.pngplt2.png 等。

plt.save('imagename.png')

请注意所有块的图像名称应该不同。

不用担心您不会留下情节图像。现在在 notebook 的最后运行此代码。

from PIL import Image
import glob
import os
images = glob.glob("*.png")
print(images)
imlist = []
for img in images:
    im = Image.open(img)
    im = im.convert('RGB')
    imlist.append(im)
imlist[0].save('plots.pdf',save_all=True, append_images=imlist[1:])
map(os.remove(img),[img for img in images])

基本上在这里,您正在一张一张地保存所有绘图的图像,然后此代码会将所有这些图像转换为 pdf,并且 os.remove 将删除所有拍摄的图像。 注意:您不应该在同一文件夹中有其他 png 文件,否则这些文件也将包含在 pdf 中并被删除。

【讨论】:

    【解决方案2】:

    如果您在 Windows 上,您可以使用带有 openpyxl 的 excel 来执行此操作,然后将 excel(手动或通过 python 作为后台进程)打印到 PDF。

    如果您使用 matplotlib,请在创建图像时使用 plt.save() 保存图像。

    在 Excel 工作簿中插入图像:

    from openpyxl.drawing.image import Image as XLIMG
    from openpyxl import Workbook
    wb = Workbook()
    ws = wb.active
    img = XLIMG('example_image.jpg')
    # Note that A1 is the cell, you can specify exactly where you want the images.
    ws.add_image(img, 'A1')
    wb.save('workbook_test')

    我经常做的是制作一个带有标题和信息的excel模板,然后在这个模板中加载我的数据或图像,然后使用python打印成PDF并上传到服务器。很酷的是,如果您需要更改报表,通常不需要编写任何代码,只需编辑 excel 模板即可。

    在后台打印 Excel 工作簿为 PDF:Print chosen worksheets in excel files to pdf in python

    【讨论】:

    • 是的,这些图表是用 matplotlib 制作的。我只想要图表。
    • 更新了我的答案 :) 显然还有其他不使用 excel 的方法,但我发现 excel 通过让我选择单元格实际上给了我很多控制权。我经常做的是制作一个带有标题和信息的excel模板,然后在这个模板中加载我的数据或图像,然后使用python打印成PDF并上传到服务器。很酷的是,如果您需要更改报表,通常不需要编写任何代码,只需编辑 excel 模板即可。
    • 通过 excel 执行此操作的非常酷的方法。谢谢!!
    猜你喜欢
    • 2019-03-17
    • 2018-10-27
    • 2021-03-22
    • 2022-10-02
    • 2015-10-15
    • 2022-07-21
    • 2017-10-10
    • 1970-01-01
    相关资源
    最近更新 更多