2015-04-03 2 views
5

У меня есть код, который создает около 50 графиков на основе groupby. Код выглядит следующим образом:Сохранение нескольких фигур в один файл pdf в 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) 

Это спасает только одна фигура, (последний в моей серии), когда я хотел бы все мои цифры должны быть сохранены в один PDF. Любая помощь будет оценена по достоинству.

+0

ваш отступы кажется неправильным ... Я предполагаю, что 'фига = группа ...' должна идти в ваш цикл –

+0

так что я понимаю, что вы хотите, чтобы ваш файл PDF иметь около 50 страниц, на каждой странице с другая фигура? –

+0

Это правильно. Думаю, я не против иметь несколько цифр на странице, но мое намерение с помощью кода выше - иметь одну цифру на странице. Мой отступ может быть неправильным, я довольно новичок в python. –

ответ

7

В коде есть ошибка с отступом. Поскольку ваша команда построения графика не была в цикле, она создаст только последний график.

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) 
Смежные вопросы