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

如何将shap.plots.bar()图形添加至Matplotlib子图?

解决SHAP bar图添加到Matplotlib子图的问题

因为shap.plots.bar没有提供ax参数指定子图轴,但它默认会使用当前活跃的Matplotlib轴,所以可以通过手动切换当前轴的方式,把bar图绘制到指定子图中。

修改后的可运行示例代码如下:

import matplotlib.pyplot as plt
import xgboost
import shap

fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(8,20))
# 枚举子图轴与对应数据集
for ax, (X, y) in zip(axes, [(x1, y1), (x2, y2)]):
    model = xgboost.XGBRegressor().fit(X, y)
    explainer = shap.Explainer(model, check_additivity=False)
    shap_values = explainer(X, check_additivity=False)
    # 将当前子图轴设为活跃轴
    plt.sca(ax)
    # 绘制bar图并关闭自动显示
    shap.plots.bar(shap_values, max_display=6, show=False)
plt.show()

原理说明

  • plt.sca(ax)会把传入的子图轴设置为当前Matplotlib的活跃绘图轴,后续所有绘图操作都会绑定到这个轴上。
  • 加上show=False参数,避免SHAP自动触发plt.show(),让我们可以统一在最后展示所有子图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:52:13