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

如何为Partial Dependence Plot设置Y轴最大值?X轴生效Y轴无效

部分依赖图(PDP)Y轴范围设置无效的原因及解决办法

问题描述

我想给Partial Dependence Plot(部分依赖图)设置坐标轴最大值,X轴范围设置生效了,但Y轴范围设置无效,这是为什么?

我的代码如下:

shap.partial_dependence_plot(
    "fc", model.predict, X100, ice=False, show=False,
    model_expected_value=True, feature_expected_value=True, ylabel="R")

import matplotlib.pyplot as plt 

from matplotlib.pyplot import figure
#ax = plt.gca()
#ax.set_ylim([0, 600])

plt.rcParams["figure.dpi"] = 90
plt.xlim(0, 600)
plt.ylim(0, 600)

plt.show()

原因分析

核心问题在于shap.partial_dependence_plot的绘图逻辑:它在绘制过程中会重新创建或强制调整坐标轴对象,尤其是Y轴会根据PDP计算出的数据范围自动适配,直接覆盖你后续通过plt.ylim()设置的参数。而X轴能生效,是因为你的设置范围和PDP默认的X轴数据范围有重叠,没有被完全覆盖。

另外你之前的代码中,调用PDP绘图后还做了导入、修改dpi等操作,这中间可能无意中切换了Matplotlib的坐标轴上下文,导致你最后调用plt.ylim()时,修改的根本不是PDP图对应的坐标轴。

解决办法

有两种可靠的方式来设置Y轴范围:

方法1:直接接收PDP返回的坐标轴对象

shap.partial_dependence_plot会返回绘图所用的坐标轴对象,直接用这个对象设置Y轴范围即可:

# 接收返回的坐标轴对象
ax = shap.partial_dependence_plot(
    "fc", model.predict, X100, ice=False, show=False,
    model_expected_value=True, feature_expected_value=True, ylabel="R"
)

import matplotlib.pyplot as plt 

plt.rcParams["figure.dpi"] = 90
plt.xlim(0, 600)
# 用返回的ax设置Y轴范围,确保修改的是PDP图的坐标轴
ax.set_ylim([0, 600])

plt.show()

方法2:绘图后立即获取当前坐标轴并修改

如果不想接收返回值,就在调用PDP绘图后立刻获取当前坐标轴,直接修改其范围:

shap.partial_dependence_plot(
    "fc", model.predict, X100, ice=False, show=False,
    model_expected_value=True, feature_expected_value=True, ylabel="R"
)

import matplotlib.pyplot as plt 

plt.rcParams["figure.dpi"] = 90
# 绘图后立刻获取当前坐标轴,避免上下文切换
ax = plt.gca()
ax.set_xlim(0, 600)
ax.set_ylim(0, 600)

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:30:54