4

我正在尝试将多个数字保存到一个多页 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>

迭代有问题吗?

4

1 回答 1

7

g并且f不是matplotlib.figure.Figure对象,它们是seaborn.axisgrid.FacetGrid对象(正如@tcaswell 在评论中提到的那样)。

PdfPages需要Figure实例,幸运的是它们很容易从FacetGrid对象中提取,使用g.figf.fig.

所以,你需要做的就是改变一行,从

figures = [g, f]

至:

figures = [g.fig, f.fig]
于 2016-09-09T10:00:13.863 回答