Python(Jupyter Notebook)多图导出PDF问题求助
解决Jupyter Notebook中多图导出PDF的问题
看起来你遇到的核心问题是缺少将多个独立创建的Matplotlib图表统一导出到PDF的逻辑,再加上前两个图表的尺寸设置过于夸张(figsize=(15,200)),很可能导致排版异常或导出失败。下面给你一个可靠的解决方案:
核心思路:使用PdfPages批量保存图表
Matplotlib自带的PdfPages类可以轻松将多个独立的Figure对象写入同一个PDF文件,每个图表会自动成为PDF的一页。同时我们需要调整不合理的图表尺寸,避免PDF页面异常。
修改后的代码如下:
import pandas as pd import numpy as np from matplotlib import pyplot as plt import seaborn as sns from matplotlib.backends.backend_pdf import PdfPages # 假设df1、df2、df3已正确加载数据 df1_subs = df1['Subs'] # 调整高度为合理值,200的高度会导致PDF页面异常巨大 fig1 = plt.figure(figsize=(15, 10)) df1_subs.plot() df2_subs = df2['Subs'] fig2 = plt.figure(figsize=(15, 10)) df2_subs.plot() fig3 = plt.figure(figsize=(15, 13)) sns.heatmap(df3) # 批量保存所有图表到PDF with PdfPages('multiple_plots.pdf') as pdf: pdf.savefig(fig1) pdf.savefig(fig2) pdf.savefig(fig3) plt.close('all') # 关闭所有图表,释放内存资源
关键注意点:
- 调整图表尺寸:原代码中
figsize=(15,200)的高度设置过于极端,会生成几乎无法正常显示的PDF页面,建议根据你的数据可视化需求调整为合理数值(比如10)。 - 明确保存逻辑:
PdfPages通过上下文管理器(with语句)确保文件正确关闭,savefig()方法逐个写入每个Figure对象。 - 清理资源:最后调用
plt.close('all')可以避免Jupyter Notebook中残留未关闭的图表,影响后续操作。
如果你之前尝试过Jupyter自带的"下载为PDF"功能,这个功能依赖LaTeX环境,且对大尺寸图表的兼容性较差,用代码主动保存的方式会更可控、可靠。
内容的提问来源于stack exchange,提问作者Alexander Troitsky
相关产品推荐
相关产品推荐

