将多个图形保存到一个多页 PDF 文档时出错
Error when saving multiple figures to a one multi-page PDF document
我正在尝试将多个图形保存到一个多页 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>
迭代有问题吗?
g
和 f
不是 matplotlib.figure.Figure
objects, they are seaborn.axisgrid.FacetGrid
objects (as mentioned by ).
PdfPages
需要 Figure
个实例,幸运的是它们很容易从 FacetGrid
对象中提取,使用 g.fig
和 f.fig
。
因此,您需要做的就是更改一行,从
figures = [g, f]
至:
figures = [g.fig, f.fig]
我正在尝试将多个图形保存到一个多页 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>
迭代有问题吗?
g
和 f
不是 matplotlib.figure.Figure
objects, they are seaborn.axisgrid.FacetGrid
objects (as mentioned by
PdfPages
需要 Figure
个实例,幸运的是它们很容易从 FacetGrid
对象中提取,使用 g.fig
和 f.fig
。
因此,您需要做的就是更改一行,从
figures = [g, f]
至:
figures = [g.fig, f.fig]