Matplotlib保存PDF尺寸偏大,如何生成6×4英寸600DPI的PDF?
解决Matplotlib保存PDF尺寸不符合6×4英寸要求的问题
我已将Matplotlib的figure.dpi设为600,通过代码确认当前图形尺寸为6.0×4.0英寸(对应<Figure size 3600x2400 with 0 Axes>)。但使用plt.savefig保存PDF时,无论是否指定dpi=600或设置bbox_inches="tight",生成的PDF尺寸均大于原图形。查阅相关技术资料未找到有效解法,现请教如何保存出符合6×4英寸、600DPI要求的PDF文件。
相关代码如下:
检查图形尺寸代码
fig_width, fig_height = plt.gcf().get_size_inches() print(fig_width, fig_height)
设置DPI参数代码
plt.rcParams["figure.dpi"] = 600
保存PDF的两种尝试代码
# 指定dpi的保存方式 plt.savefig("figure.pdf", format='pdf', bbox_inches="tight", dpi=600)
# 不指定dpi的保存方式 plt.savefig("figure.pdf", format='pdf', bbox_inches="tight")
解决方法
问题核心在于bbox_inches="tight"参数:它会自动扩展画布尺寸以容纳所有图形元素(如坐标轴标签、标题),导致最终PDF超出设定的6×4英寸范围。可通过以下方式解决:
- 移除
bbox_inches="tight":若图形元素未超出原画布范围,直接删除该参数,即可严格保持6×4英寸的设定尺寸。 - 手动调整子图边距:若必须保留
bbox_inches="tight"(比如元素确实超出画布),可通过调整子图边距抵消自动扩展的影响:# 调整子图边距,确保元素限定在6×4英寸画布内 plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1) plt.savefig("figure.pdf", format='pdf', dpi=600) - 创建图形时显式指定尺寸:初始化图形时直接定义尺寸和dpi,避免后续参数冲突:
# 创建6×4英寸、dpi=600的图形 fig = plt.figure(figsize=(6, 4), dpi=600) # 绘制图形内容... plt.savefig("figure.pdf", format='pdf')
内容的提问来源于stack exchange,提问作者josepmaria
相关产品推荐
相关产品推荐

