tutorial savefig plots how guardar español python pdf pagination matplotlib

python - savefig - save file matplotlib



Matplotlib savefig en diferentes páginas de un PDF (3)

No me he probado a mí mismo, pero en el matplolib faq hay algunas instrucciones para guardar parcelas en pdf en varias páginas.

Tengo una larga trama, compuesta de varias subtramas horizontales organizadas en una columna.

Cuando llamo a fig.savefig (''what.pdf''), el archivo de salida resultante muestra todos los gráficos agrupados en una sola página.

Pregunta: ¿hay alguna manera de decirle a savefig que guarde en cualquier número (posiblemente determinado automáticamente) de páginas en pdf?

Prefiero evitar varios archivos y luego os.system (''fusionar ...''), si es posible.


Sospecho que hay una manera más elegante de hacer esto, pero una opción es usar tempfiles o StringIO para evitar hacer archivos tradicionales en el sistema y luego puedes unirlos.


Me preguntaba cómo realizar algo similar. Tengo un conjunto de trazados procedentes de diferentes archivos de imagen, que varían según el archivo. Entonces, la idea es que, una vez que encuentre un buen número de parcelas que puedan trazarse en una página, aplíquelo para los archivos. Afortunadamente, encontré una solución sugerida aquí: http://blog.marmakoide.org/?p=94 . Sin embargo, no funciona correctamente, ya que solo traza las primeras gráficas del panel, dejando el resto de paneles vacíos. Lo modifiqué y aquí incluyo una versión de trabajo para una grilla (1XN) y los gráficos de salida.

import numpy from matplotlib import pyplot as plot from matplotlib.backends.backend_pdf import PdfPages # Generate the data data = numpy.random.randn(7, 1024) # The PDF document pdf_pages = PdfPages(''histograms.pdf'') # Generate the pages nb_plots = data.shape[0] nb_plots_per_page = 5 nb_pages = int(numpy.ceil(nb_plots / float(nb_plots_per_page))) grid_size = (nb_plots_per_page, 1) for i, samples in enumerate(data): print print i,i % nb_plots_per_page,samples # Create a figure instance (ie. a new page) if needed if i % nb_plots_per_page == 0: print ''Opening'' fig = plot.figure(figsize=(8.27, 11.69), dpi=100) # Close the page if needed elif (i + 1) % nb_plots_per_page == 0 or (i + 1) == nb_plots: plot.subplot2grid(grid_size, (i % nb_plots_per_page, 0)) plot.hist(samples, 32, normed=1, facecolor=''#808080'', alpha=0.75) plot.title(str(i+1)) plot.tight_layout() pdf_pages.savefig(fig) print ''Closing'' print i,samples # Plot stuffs ! print i,samples plot.subplot2grid(grid_size, (i % nb_plots_per_page, 0)) plot.hist(samples, 32, normed=1, facecolor=''#808080'', alpha=0.75) plot.title(str(i+1)) # Write the PDF document to the disk pdf_pages.close() print ''histograms.pdf''