Python 将巨大的海本海图导出为多页pdf格式

Python 将巨大的海本海图导出为多页pdf格式,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我创建了一个使用seaborn catplot生成大量图表的程序。这是我的代码示例,演示了最终图表的外观 plot= sns.catplot(data=df3, x="solutions", y="score", col="subject", col_wrap=3, hue="Value",height=3, aspect=1.5,legend=False, sharex=False, sharey=False) p

我创建了一个使用seaborn catplot生成大量图表的程序。这是我的代码示例,演示了最终图表的外观

plot= sns.catplot(data=df3, x="solutions", y="score", col="subject", col_wrap=3, hue="Value",height=3, aspect=1.5,legend=False, sharex=False, sharey=False)
plt.legend(loc='upper left')
plot.set_xticklabels(rotation=90)
plt.tight_layout()

#Create output
plot.savefig("output3.pdf")

然而,由于绘图可能会扩展到300多个绘图,当我尝试导出为pdf时,图表的大小太大,绘图的大部分被裁剪掉。我注意到这个pdf输出只有1页。是否有方法为此输出创建多个页面

编辑:

正如评论所建议的,我正在尝试使用PdfPages

import matplotlib.backends.backend_pdf
pdf = matplotlib.backends.backend_pdf.PdfPages("output.pdf")
for fig in range(1, plt.gcf().number + 1):
    plot= sns.catplot(data=df3, x="solutions", y="score", col="subject", col_wrap=3, hue="Value",height=3, aspect=1.5,legend=False, sharex=False, sharey=False)
    plt.legend(loc='upper left')
    plot.set_xticklabels(rotation=90)
    plt.tight_layout()
    
    pdf.savefig( fig )
pdf.close()
但它会返回错误消息:

<Figure size 432x288 with 0 Axes>


并返回pdf文档,其中包含空白页。请帮助我,因为我可能不知道我做错了哪一部分

我想你必须将你的图分成几个图形,以便使用

如果使用
catplot()
可以使用
col\u order=
指定要显示的主题。您可以使用循环遍历
主题的块

大概是这样的:

def grouper(iterable,n,fillvalue=None):
“将数据收集到固定长度的块或块中”
#石斑鱼('ABCDEFG',3,'x')-->ABC DEF Gxx“
从itertools导入zip\u
args=[iter(iterable)]*n
返回zip_最长(*参数,fillvalue=fillvalue)
导入matplotlib.backends.backend\u pdf
pdf=matplotlib.backends.backend\u pdf.PdfPages(“output.pdf”)
每页N\u图\u=9
对于grouper中的COL(数据['subject'].unique(),每页N个绘图):
g=sns.catplot(数据=data,x='solution',y='score',col='subject',col\u wrap=3,kind='point',col\u order=cols)
pdf.savefig(g.fig)
pdf.close()

我发现这非常有帮助。这是否回答了您的问题?请注意,如果您真的希望PDF页面上的小倍数保持一致,您可能也希望传递
订单
,并设置y限制。