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

不同系统下Matplotlib的dpi问题及图像尺寸差异求助

解决Matplotlib跨版本plt.savefig尺寸不一致问题

核心原因

不同Matplotlib版本中,plt.savefig的默认行为(比如dpi传递逻辑、边界处理规则)存在细微差异,即使fig.get_size_inches()和dpi返回值一致,最终输出图像的实际尺寸也可能出现偏差。

具体解决建议

  • 统一Matplotlib版本

    1. 先确认两端版本:import matplotlib; print(matplotlib.__version__)
    2. 将本地版本对齐到Colab的版本,执行pip install matplotlib==<Colab版本号>(比如Colab用3.7.1就装matplotlib==3.7.1);也可以选择升级本地到最新稳定版,确保行为统一。
  • 显式指定所有尺寸相关参数
    避免依赖版本默认值,在代码中强制声明关键参数:

    # 创建figure时显式设置尺寸和dpi
    fig = plt.figure(figsize=(6, 4), dpi=72)
    # 绘图逻辑...
    # 保存时强制指定dpi和边界参数
    plt.savefig('output.png', dpi=72, bbox_inches='tight', pad_inches=0)
    

    注意:旧版本中savefig的dpi默认可能不继承figure的dpi,显式指定可消除这个差异。

  • 统一全局配置参数
    在代码开头覆盖Matplotlib的默认rcParams,确保跨版本配置一致:

    import matplotlib.pyplot as plt
    # 统一基础配置
    plt.rcParams['figure.figsize'] = (6, 4)
    plt.rcParams['figure.dpi'] = 72
    plt.rcParams['savefig.dpi'] = 72
    
  • 验证输出结果
    保存后检查图像实际像素尺寸,确保和Colab输出一致:

    from PIL import Image
    img = Image.open('output.png')
    print(img.size)  # 预期输出(432, 288)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:00:54