Объедините matplotlib и reportlab - PullRequest
0 голосов
/ 03 марта 2020

Я хочу объединить библиотеки 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

I найти рендеринг не страшно, тем более что он не соответствует названию осей слева. Я понимаю, что он должен быть помещен в переменную lista, но я не вижу синтаксиса.

Другим решением было бы экспортировать кадр данных в html и преобразовать его в png. для этого я установил библиотеку pypando c, но невозможно найти в inte rnet код, который конвертировал бы html в png ...

...