【问题标题】:Combine matplotlib and reportlab结合matplotlib和reportlab
【发布时间】:2020-03-03 20:42:13
【问题描述】:

我希望结合 matplotlib 和 reportlab 库来创建 pdf 报告。我特别想在这个 pdf 中显示一个数据框。经过一番研究,我设法得到了这个代码:

import numpy as np
import pandas as pd


from reportlab.platypus import SimpleDocTemplate
from reportlab.lib.pagesizes import letter


from reportlab.platypus import Table


df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar','foo', 'bar', 'foo', 'foo'], 'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], 'C': np.random.randn(8),'D': np.random.randn(8)})
data = df.groupby('A').sum()

print(data)
filename = 'dataframe.pdf'

pdf = SimpleDocTemplate(filename, pagesize = letter)


lista = [data.columns[:,].values.astype(str).tolist()] + data.values.tolist()
table = Table(lista)

#PDF construction
elems = []
elems.append(table)

pdf.build(elems)

我在 pdf 上得到这个结果:https://zupimages.net/viewer.php?id=20/10/t22g.png

我发现渲染并不糟糕,特别是因为它错过了左侧轴的标题。我知道它应该放在 lista 变量中,但我并没有真正看到语法。

另一种解决方案是将数据框导出为 html,然后将其转换为 png。为此,我安装了 pypandoc 库,但在互联网上找不到将 html 转换为 png 的代码...

【问题讨论】:

    标签: python-3.x matplotlib type-conversion png reportlab


    【解决方案1】:

    我在同一个问题上苦苦挣扎 - 如何结合 Matplotlib 和 Reportlab。

    可以做到的方法如下:您将单独创建一个情节,将其保存为临时图片,然后自动获取该图片并将其添加到pdf中。我对这个初始值持怀疑态度,但已经使用了很长时间,现在它是一个非常好的解决方案,它既快速又准确。

    我建议你研究这个 SO 答案,你还需要安装pdfrw

    Is there a matplotlib flowable for ReportLab?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-22
      • 2022-12-02
      • 1970-01-01
      • 2011-03-29
      • 2011-04-15
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多