2015-04-03 15 views
5

Ho un codice che crea circa 50 grafici basati su groupby. Il codice è simile al seguente:Salvataggio di più cifre in un file PDF in matplotlib

import matplotlib.pyplot as plt 
from matplotlib.backends.backend_pdf import PdfPages 

with PdfPages('foo.pdf') as pdf: 
    for i, group in df.groupby('station_id'): 
     plt.figure() 


fig=group.plot(x='year', y='Value',title=str(i)).get_figure() 
pdf.savefig(fig) 

Questo sta salvando una sola figura, (l'ultimo nella mia serie) quando vorrei tutti i miei dati da memorizzare in un unico PDF. Qualsiasi aiuto sarebbe apprezzato.

+0

vostro rientro sembra sbagliato ... Suppongo che 'fig = gruppo ...' dovrebbe andare nel vostro ciclo for –

+0

così capisco che volete che il vostro file pdf di avere circa 50 pagine, ogni pagina con una figura diversa? –

+0

Questo è corretto. Immagino che non mi dispiacerebbe avere più figure per pagina, ma la mia intenzione con il codice sopra è di avere una cifra per pagina. La mia indentazione potrebbe essere sbagliata, sono ancora abbastanza nuova per Python. –

risposta

7

C'è un errore di indentazione nel codice. Poiché il comando di stampa non era nel ciclo, creerà solo l'ultimo grafico.

import matplotlib.pyplot as plt 
from matplotlib.backends.backend_pdf import PdfPages 

with PdfPages('foo.pdf') as pdf: 
    for i, group in df.groupby('station_id'): 
     plt.figure() 
     fig=group.plot(x='year', y='Value',title=str(i)).get_figure() 
     pdf.savefig(fig) 
Problemi correlati