Ошибка при сохранении нескольких рисунков в одном многостраничном документе PDF

Я пытаюсь сохранить несколько рисунков в одном многостраничном PDF-документе. Мой код выглядит следующим образом:

import matplotlib.backends.backend_pdf
pdf = matplotlib.backends.backend_pdf.PdfPages('output.pdf')

sns.set_style('darkgrid')

g = sns.factorplot(data=df,
                   x='Date',
                   y='Product_Count',
                   col='Company',
                   col_wrap=4,
                   sharey=False)
g.set_xlabels('')
g.set_ylabels('product count')
g.set_xticklabels(rotation=45)
plt.locator_params(axis = 'x', nbins = 8)

f = sns.factorplot(data=df,
                   x='Date',
                   y='Volume_Count',
                   col='Company',
                   col_wrap=4,
                   sharey=False)
f.set_xlabels('')
f.set_ylabels('volume count')
f.set_xticklabels(rotation=45)
plt.locator_params(axis = 'x', nbins = 8)

figures = [g, f]

for figure in figures:
    pdf.savefig(figure)
pdf.close()

Я вижу это сообщение об ошибке:

ValueError: No such figure: <seaborn.axisgrid.FacetGrid object at 0x237CD5F0>

Что-то не так с итерацией?

1 ответ

Решение

g а также f не matplotlib.figure.Figure объекты, они seaborn.axisgrid.FacetGrid объекты (как упомянуто @tcaswell в комментариях).

PdfPages нуждается в Figure экземпляры, и, к счастью, их легко извлечь из FacetGrid объекты, используя g.fig а также f.fig,

Итак, все, что вам нужно сделать, это изменить одну строку, из

figures = [g, f]

чтобы:

figures = [g.fig, f.fig]
Другие вопросы по тегам