我打算制作一份包含很多(总共 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'
参考: