目前我正在使用 Python reportlab 制作报告。以前我使用 PdfPages,但由于缺乏自定义,我认为最好迁移到 reportlab。
这里的问题以前在 PdfPages 中,我可以轻松转换大量分类图。假设我有 100 个图表并在 PdfPages 中使用我以前的代码
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
from itertools import zip_longest
args = [iter(iterable)] * n
return zip_longest(*args, fillvalue=fillvalue)
with PdfPages('Compile2.pdf') as pdf:
#For the rest of ET plots
N_plots_per_page = 12
for cols in grouper(plotcorrall['subject'].unique(), N_plots_per_page):
plotall = sns.lmplot(x="val_mean", y="score", col="subject", data=mydf,col_wrap=4, sharex=False, sharey=False,col_order=cols)
plt.tight_layout()
pdf.savefig()
pdf.close()
styles=getSampleStyleSheet()
doc = SimpleDocTemplate("form_letter.pdf",pagesize=letter,
rightMargin=inch/2,leftMargin=inch/2,
topMargin=30,bottomMargin=18)
Story = []
N_plots_per_page = 12
for cols in grouper(plotcorrall['param_name'].unique(), N_plots_per_page):
plotall = sns.lmplot(x="val_mean", y="score", col="subject", data=mydf,col_wrap=4, sharex=False, sharey=False,col_order=cols)
plt.tight_layout()
imgdata = BytesIO
plt.savefig(imgdata, format='png', dpi=300)
imgdata.seek(0) # rewind the data
im = Image(imgdata,8*inch, 9*inch)
Story.append(im)
doc.build(Story)
但是代码不起作用,因为报告中只返回了 9 个最后一个图表的 1 页报告。我怎样才能正确地做到这一点?谢谢