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

如何将SHAP summary_plot保存为本地图片文件?

解决SHAP summary_plot保存空图的问题

出现空图的核心原因是shap.summary_plot()默认会自动调用plt.show(),该操作会关闭并清空当前的绘图上下文,导致后续执行plt.savefig()时没有可保存的内容。以下是两种正确的保存方法:

方法一:禁用自动显示,先保存再按需显示

调用summary_plot时传入show=False参数,阻止其自动触发plt.show(),随后直接保存图片,最后可手动调用plt.show()查看图表:

import shap
import matplotlib.pyplot as plt

# 假设已完成模型训练与SHAP值计算
# explainer = shap.GradientExplainer(model, X_train)
# shap_values = explainer.shap_values(X_test)

# 生成摘要图但不自动显示
shap.summary_plot(shap_values, X_test, show=False)

# 保存图片,bbox_inches='tight'可避免标签被截断
plt.savefig('shap_summary_plot.png', dpi=300, bbox_inches='tight')

# 可选:手动显示图表
plt.show()

方法二:在自动显示前保存

如果不想修改summary_plot的参数,需要确保在plt.show()执行前完成保存操作:

import shap
import matplotlib.pyplot as plt

# 生成摘要图(此时还未执行plt.show())
shap.summary_plot(shap_values, X_test)

# 立即保存图片
plt.savefig('shap_summary_plot.png', dpi=300, bbox_inches='tight')

# 再执行显示操作
plt.show()

额外注意事项

  • 如果模型是多输出类型,shap_values会是一个列表,此时需要指定class_id参数聚焦特定输出的解释结果,避免绘图异常。
  • 保存时建议设置dpi参数提高图片分辨率,bbox_inches='tight'可防止坐标轴标签或标题被截断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:08:21