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

plt.savefig保存空白图求助:绘制的图表无法正常保存

解决Matplotlib保存图片空白的问题

你的代码存在两个核心问题,直接导致保存的图片显示空白:

1. 错误创建了全新的空白画布

代码末尾执行的fig=plt.figure()会生成一个空的新画布,后续调用fig.savefig()保存的是这个空白画布,而非你之前绘制好的图表。

2. 未正确初始化坐标轴对象ax

代码开头仅创建了画布,但未关联对应的坐标轴,直接使用ax.bar会引发错误(若此前未定义ax),需要将画布与坐标轴绑定。

修改后的完整代码

# 同时创建画布和坐标轴,指定尺寸
fig, ax = plt.subplots(figsize=(20,5))

Bar_Target_Gen = ax.bar(0, Target_Gen, color='#00BA00', label='Target Gen.', width=0.5)

Bar_Gen_Energy = ax.bar(0, Gen_Energy, color='#DBFF1F', label='Gen. Energy', width=0.4)

Bar_E_Loss = ax.bar(0, E_Loss, color='#A9B3A9', label='E. Loss', bottom=Gen_Energy, width=0.4)

Bar_Theor_Energy = ax.bar(0, Theor_Energy, color=(0, 0, 0, 0), edgecolor='black', linestyle='dotted', width=0.5, linewidth=1.5, label='Theor. Energy')

ax.text(0, Target_Gen, '%d' % Target_Gen + ' MWh', ha='center', va='top', fontsize=20, color='#FFFFFF', fontweight='semibold')
ax.text(0, 30, '%d' % Gen_Energy + ' MWh', ha='center', va='top', fontsize=20, color='#FFFFFF', fontweight='semibold')
ax.text(0, Theor_Energy, '%d' % Theor_Energy + ' MWh', ha='center', va='bottom', fontsize=16, color='Black', fontweight='semibold')

ax.set_xticks([])   

ax.legend(loc='upper right', bbox_to_anchor=(1.33, 1))

# 保存绘制完成的目标画布,bbox_inches='tight'避免图例被裁剪
fig.savefig('input/grafico.jpg', dpi=100, bbox_inches='tight')
plt.show()

额外注意事项

  • 必须先执行savefig再调用plt.show(),因为plt.show()会释放画布资源,后续保存会得到空白图。
  • 添加bbox_inches='tight'参数,可防止图例超出图片范围被裁剪。

内容的提问来源于stack exchange,提问作者Damian Fabricio Márquez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:30:18