Search code examples
pythonmatplotlibpdfpages

is it possible to append figures to Matplotlib's PdfPages?


I want to save 2 figures created at different parts of a script into a PDF using PdfPages, is it possible to append them to the pdf?

Example:

fig = plt.figure()
ax = fig_zoom.add_subplot(111)
ax.plot(range(10), range(10), 'b')

with PdfPages(pdffilepath) as pdf:
    pdf.savefig(fig)

fig1 = plt.figure()
ax = fig_zoom.add_subplot(111)
ax.plot(range(10), range(2, 12), 'r')

with PdfPages(pdffilepath) as pdf:
    pdf.savefig(fig1)

Solution

  • Sorry, that's a lame question. We just shouldn't use the with statement.

    fig = plt.figure()
    ax = fig_zoom.add_subplot(111)
    ax.plot(range(10), range(10), 'b')
    
    # create a PdfPages object
    pdf = PdfPages(pdffilepath)
    
    # save plot using savefig() method of pdf object
    pdf.savefig(fig)
    
    fig1 = plt.figure()
    ax = fig_zoom.add_subplot(111)
    ax.plot(range(10), range(2, 12), 'r')
    
    pdf.savefig(fig1)
    
    # remember to close the object to ensure writing multiple plots
    pdf.close()