You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 16:06:10