组合matplotlib和reportlab

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

我正在寻求结合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个回答
0
投票

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

完成方法如下:您将单独创建一个绘图,将其保存为临时图片,然后自动获取此图片并将其添加到pdf中。我对此首字母表示怀疑,但已经使用了一段时间,现在它是一个很好的解决方案,它快速且准确。

我建议您研究此SO答案,还需要安装pdfrw

Is there a matplotlib flowable for ReportLab?

© www.soinside.com 2019 - 2024. All rights reserved.