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

如何修改shap.plot.bar与shap.plots.waterfalls的图表颜色?

修改SHAP Bar图与Waterfall图颜色的解决方案

一、SHAP Bar图颜色修改

SHAP的bar绘图函数支持直接传入color参数设置颜色,无需依赖matplotlib全局修改:

import shap
import matplotlib.pyplot as plt

# 单颜色设置
shap.plots.bar(shap_values, color="#2E86AB", show=False)
plt.title("This is my title")
plt.show()

如果需要为每个特征设置不同颜色,传入对应长度的颜色列表即可:

# 自定义多色列表,数量需匹配特征总数
custom_colors = ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FFEAA7"]
shap.plots.bar(shap_values, color=custom_colors, show=False)
plt.title("This is my title")
plt.show()

二、SHAP Waterfall图颜色修改

Waterfall图没有直接暴露颜色参数,需通过获取matplotlib轴对象修改条形patch的颜色:

import shap
import matplotlib.pyplot as plt

# 绘制图并获取轴对象
fig, ax = plt.subplots()
shap.plots.waterfall(shap_values[-1], show=False)

# 遍历所有条形,按正负贡献设置颜色
bars = ax.patches
for bar in bars:
    if bar.get_height() > 0:
        bar.set_facecolor("#27AE60")  # 正贡献设为绿色
    else:
        bar.set_facecolor("#E74C3C")  # 负贡献设为红色

plt.title("Waterfall Custom Color")
plt.show()

也可以单独修改指定位置的条形颜色:

# 将第一个条形改为橙色
bars[0].set_facecolor("#F39C12")

注意事项

  • 调用shap.plots.xxx时必须添加show=False,避免提前渲染导致无法修改元素。
  • 颜色支持十六进制代码、matplotlib预设颜色名(如"red")或RGB元组(如(0.2, 0.4, 0.6))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:35:30