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''