I'm planning to make a report consist of a lot (total 200+) of seaborn chart and some tables. There are different chart and to build them initially I'm using different script and iteration of PdfPages. But somehow I'm required to compile all the chart into single pdf file output. Both chart type are correlation build using lmplot
plottop10 = sns.lmplot(x="xvalue", y="yvalue", col="parameter1",data=plotcorr10,col_wrap=3, sharex=False, sharey=False)
This code return 10 plots
And there is also a table with the r^2 value of those 10 plots
2st type of chart
plotall = sns.lmplot(x="x2value, y="y2value", col="parameter2", data=plotcorrall,col_wrap=3, sharex=False, sharey=False)
This code return 200+ plots
I want to join 1st type of chart with 2nd type of chart. I tried to use PdfPages to get 1st type of chart on the 1st page with the table and 2nd page onwards with 2nd type of chart with each page consists of 15 charts.
Edit: add the code
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()
It returns error messages
AttributeError: 'NoneType' object has no attribute 'newPage'
AttributeError: 'NoneType' object has no attribute 'endStream'
AttributeError: 'NoneType' object has no attribute 'finalize'
Reference: