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

如何在Python Matplotlib中保存图片时保持统一尺寸?

解决Matplotlib保存PNG尺寸不一致的问题

问题出在你使用的bbox_inches='tight'参数上——这个参数会根据图形内容自动裁剪周围的空白区域,不同内容的图形裁剪后的最终尺寸自然会出现差异。以下是几种让所有图片保持固定尺寸的解决方案:

  • 移除自动裁剪参数,使用固定尺寸保存
    直接去掉bbox_inches='tight',依赖figsize和dpi定义的固定尺寸生成图片:

    fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(20, 10))
    # 执行你的绘图逻辑
    fig.savefig('myImage.png', dpi=300)
    

    此时图片的像素尺寸固定为 20*300=6000(宽)× 10*300=3000(高),但可能会保留较多默认空白边距。

  • 手动固定边距,平衡空白与尺寸
    如果需要减少空白但维持固定尺寸,用subplots_adjust手动设置统一的边距:

    fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(20, 10))
    # 执行你的绘图逻辑
    # 根据需求调整上下左右边距(数值为图形宽/高的比例,范围0-1)
    fig.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)
    fig.savefig('myImage.png', dpi=300)
    
  • 用约束布局自动调整内容,保留固定尺寸
    创建子图时开启constrained_layout=True,让Matplotlib自动调整元素位置避免重叠,但不会改变整体画布尺寸:

    fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(20, 10), constrained_layout=True)
    # 执行你的绘图逻辑
    fig.savefig('myImage.png', dpi=300)
    
  • 必须使用裁剪时,指定固定裁剪区域
    如果一定要保留裁剪逻辑,手动定义固定的裁剪范围,确保所有图片裁剪后的尺寸一致:

    from matplotlib.transforms import Bbox
    
    fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(20, 10))
    # 执行你的绘图逻辑
    # 定义固定裁剪区域,坐标为画布的归一化比例(左、下、右、上)
    fixed_bbox = Bbox.from_extents(0.05, 0.05, 0.95, 0.95)
    fig.savefig('myImage.png', bbox_inches=fixed_bbox, dpi=300)
    

内容的提问来源于stack exchange,提问作者mikezang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:52:11