0

我打算制作一份包含很多(总共 200 多张)seaborn 图表和一些表格的报告。有不同的图表,最初构建它们我使用不同的脚本和 PdfPages 的迭代。但不知何故,我需要将所有图表编译成单个 pdf 文件输出。两种图表类型都是使用 lmplot 建立的相关性

在此处输入图像描述 第一种图表类型

plottop10 = sns.lmplot(x="xvalue", y="yvalue", col="parameter1",data=plotcorr10,col_wrap=3, sharex=False, sharey=False)

此代码返回 10 个图

还有一张表,其中包含这 10 个地块的 r^2 值

第二种图表

plotall = sns.lmplot(x="x2value, y="y2value", col="parameter2", data=plotcorrall,col_wrap=3, sharex=False, sharey=False)

此代码返回 200 多个图

我想加入第一种图表和第二种图表。我尝试使用 PdfPages 在带有表格的第一页上获取第一种类型的图表,从第 2 页开始使用第二种类型的图表,每页包含 15 个图表。

编辑:添加代码

import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

with PdfPages('et.pdf') as pdf:
    #This part to make the table as image, with this I hope can insert inside pdf
    def render_mpl_table(data, col_width=8.0, row_height=0.625, font_size=12,
                         header_color='#40466e', row_colors=['#f1f1f2', 'w'], edge_color='w',
                         bbox=[0, 0, 1, 1], header_columns=0,
                         ax=None, **kwargs):
        if ax is None:
            size = (np.array(data.shape[::-1]) + np.array([0, 1])) * np.array([col_width, row_height])
            fig, ax = plt.subplots(figsize=size)
            ax.axis('off')
        mpl_table = ax.table(cellText=data.values, bbox=bbox, colLabels=data.columns, **kwargs)
        mpl_table.auto_set_font_size(False)
        mpl_table.set_fontsize(font_size)

        for k, cell in mpl_table._cells.items():
            cell.set_edgecolor(edge_color)
            if k[0] == 0 or k[1] < header_columns:
                cell.set_text_props(weight='bold', color='w')
                cell.set_facecolor(header_color)
            else:
                cell.set_facecolor(row_colors[k[0]%len(row_colors) ])
        return ax.get_figure(), ax
    fig,ax = render_mpl_table(corrfin, header_columns=0, col_width=7.5)
    plottop10 = sns.lmplot(x="xvalue", y="yvalue", col="parameter",data=plotcorr10,col_wrap=3, sharex=False, sharey=False)
    plt.tight_layout()
    pdf.savefig()
    pdf.close()
    plotall = sns.lmplot(x="x2value", y="y2value", col="parameter", data=plotcorrall,col_wrap=3, sharex=False, sharey=False)
    pdf.savefig()
    pdf.close()

它返回错误消息

AttributeError: 'NoneType' object has no attribute 'newPage'
AttributeError: 'NoneType' object has no attribute 'endStream'
AttributeError: 'NoneType' object has no attribute 'finalize'

参考:

  1. 如何将 Pandas 数据框/系列数据保存为图形?
  2. 将绘图保存为 PDF
4

0 回答 0