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

使用plt.savefig保存绘图时纬度标签不显示但经度正常问题求解

问题原因

  • 你代码中plt.savefig()传入的bbox_inches='tight'参数是核心诱因:该参数会自动裁剪图片边缘空白,但Cartopy的gridliner生成的纬度标签属于轴外装饰元素,matplotlib自动计算裁剪边界时无法正确识别这部分内容,直接把左侧的纬度标签裁掉了。
  • 你初始化画布时用gridspec设置的left=0.15预留的左侧边距不足,在savefig输出300dpi的高分辨率图片时,标签被挤压到画布可视范围外。
  • Jupyter Notebook的%matplotlib inline渲染逻辑和savefig的文件渲染逻辑是独立的,所以会出现Notebook显示正常、存图丢失标签的差异。

解决方法

  1. 移除plt.savefig()中的bbox_inches='tight'参数,避免自动裁剪误删标签。
  2. 调大gridspec的left参数到0.2左右,给左侧纬度标签预留足够的显示空间,可根据实际显示效果微调数值。
  3. 存图前添加fig.canvas.draw()强制渲染所有元素,保证gridliner标签的位置被正确计算后再保存。

修改后的核心代码片段

# 调整gridspec左侧边距
spec = gridspec.GridSpec(ncols=2, nrows=4,figure=fig,left=0.2,bottom=0.1,right=0.7,top=0.9)

# 所有绘图逻辑结束后,先强制渲染再存图
fig.canvas.draw()
plt.savefig("***.jpg",dpi=300,pad_inches=0.15)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 12:06:04