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

plt.savefig在Colab与本地生成图像不一致问题排查

问题解决:Matplotlib版本差异导致跨环境图像生成不一致

问题场景

将基于ssqueezepy的1D信号转2D图像代码从Google Colab移植到本地Ubuntu环境后,**相同输入、相同代码调用plt.savefig**时出现两个核心问题:

  • 图像尺寸不一致:本地生成496×369像素图像,Colab生成334×217像素图像
  • 内容无法匹配:即使按比例缩放,图像细节仍无法对齐

根因排查

逐一验证输入数据、代码逻辑、其他依赖库版本后,确认问题根源是Matplotlib版本差异——Colab与本地Ubuntu环境的Matplotlib默认渲染参数(如dpi、默认画布尺寸、字体渲染逻辑等)因版本不同存在差异,而ssqueezepy的绘图逻辑依赖这些默认参数,最终导致生成的图像不一致。

解决方案

1. 统一Matplotlib版本

  • 在Colab中执行以下命令查看当前版本:
    import matplotlib
    print(matplotlib.__version__)
    
  • 在本地Ubuntu环境安装对应版本:
    pip install matplotlib==x.x.x
    
    替换x.x.x为Colab输出的版本号,确保跨环境Matplotlib行为完全一致。

2. 显式固定绘图参数(无需修改版本)

在代码中显式指定plt.savefig的关键参数,覆盖默认值:

import matplotlib.pyplot as plt

# 生成ssqueezepy图像后,保存时指定参数
plt.savefig("output.png", dpi=96, figsize=(3.48, 2.26), bbox_inches='tight')
  • dpi:匹配目标环境默认dpi(Colab默认通常为96)
  • figsize:根据目标图像尺寸反推(如334×217像素对应(334/96, 217/96)≈(3.48,2.26))
  • bbox_inches='tight':避免图像边缘被裁剪,保证内容完整性

3. 覆盖Matplotlib全局默认参数

在代码开头设置全局参数,强制统一渲染逻辑:

import matplotlib.pyplot as plt

plt.rcParams['figure.dpi'] = 96
plt.rcParams['figure.figsize'] = (3.48, 2.26)
# 可选:统一字体、线条宽度等其他影响渲染的参数
plt.rcParams['font.size'] = 10

内容的提问来源于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 20:00:58