使用Python用100多个图制作PDF报表的最佳方法是什么?

时间:2018-09-08 11:38:31

标签: python pandas pdf matplotlib report

我需要一份包含很多图表的PDF报告。它们中的大多数将在一个循环中使用matplotlib创建,但是我还需要包括熊猫图和数据框(整个视图)以及seaborn图。现在,我探索了以下解决方案:

  • PythonTex。我已经将它用于其他项目,但是这会花费很多时间,因为您必须为要显示的每个图编写\ pythontexprint。
  • 在循环的每次迭代中使用savefig命令,并将所有图保存为图像,以便稍后将所有图插入。这也是非常耗时的选择。另一个选择是使用该命令将图另存为pdf,然后合并所有pdf。这将创建一个难看的报告,因为这些图将无法容纳整个页面。
  • 将RStudio与网状结构一起使用以创建Markdown报告。这里的问题是,我需要学习网状功能,从而花费时间。
  • 据我所知,PyPDF不能满足我的需求。
  • 创建一个jupyter笔记本,然后尝试将其导出为PDF。再一次,我不知道如何使用jupyter笔记本,我读到我必须先转换为html,然后转换为pdf。
  • 这里的解决方案:Generating Reports with Python: PDF or HTML to PDF但是,问题来自三年前,如今可能是更好的选择。

所以我的问题是:是否有任何简便快捷的方法来以合理的方式将所有这些图(如果沿着代码生成的图更好地生成)在PDF中?

1 个答案:

答案 0 :(得分:2)

我的建议是对config缓冲区使用matplotlibs new_p = p.copy() new_p.update(config) (或将缓冲区保存到100的列表或类似数据结构中)。然后,您可以使用这些图像缓冲区使用savefig(网站here和docs here)之类的库将图像插入pdf。我经常使用这种方法通过BytesIO库创建PowerPoint文档,但也使用reportlab通过PDF对其进行了验证。 python-pptx库非常强大,有点“低级”,因此可能会有一些学习入门的入门知识,但肯定可以满足您的需求。有一个简单的入门教程here。 reportlab是BSD许可,可在pip和conda上获得。

无论如何,我的代码段如下所示。
抱歉,它有点长,但是我的代码具有一些帮助功能,可以打印文本和虚拟图像。您应该可以直接复制/粘贴。

该代码将产生一个类似于enter image description here

的PDF
reportlab