如何调整SHAP summary plots X轴解决数据拥挤显示不全问题
SHAP交叉验证特征重要度图X轴拥挤自动适配方案
直接在原有绘图代码基础上做以下修改即可,所有参数根据当前数据集特征数动态计算,换数据集不需要手动调值:
- 替换固定画布尺寸为动态计算值
原示例代码写死了画布宽高,特征数量多时宽度不足必然出现拥挤,替换为动态计算逻辑:
import matplotlib.pyplot as plt # 替换为你代码中存储特征名的变量 feature_list = 你的特征名列表变量 n_features = len(feature_list) # 单特征分配0.5英寸宽度,画布最小宽度设为8英寸,适配少特征场景 fig_width = max(8, n_features * 0.5) # 交叉验证折数较多时也可按相同逻辑动态计算画布高度 fig, ax = plt.subplots(figsize=(fig_width, 7))
- 添加X轴标签自动防重叠配置
在所有绘图逻辑执行完成、调用plt.show()前加入以下代码,自动调整标签角度、对齐方式,避免文字扎堆:
# 自动旋转X轴标签并右对齐,防止旋转后文字错位 fig.autofmt_xdate(rotation=45, ha='right') # 自动调整全图边距,避免标签、标题被画布边缘截断 plt.tight_layout() # 特征名较长时可保留这行给底部留足空间,不需要可注释 fig.subplots_adjust(bottom=0.22)
- (可选)特征数极多时自动稀疏刻度
如果数据集特征数超过25个,全量显示标签依然拥挤,可加逻辑自动控制刻度显示间隔:
if n_features > 25: # 控制单屏最多显示25个X轴标签,自动计算间隔 tick_step = round(n_features / 25) ax.set_xticks(ax.get_xticks()[::tick_step])
补充优化:如果需要进一步压缩空间,可以在
autofmt_xdate前加ax.tick_params(axis='x', labelsize=9)缩小X轴标签字号。以上配置在特征数5-60个的场景下都可以自动适配,不需要手动调整参数。
内容的提问来源于stack exchange,提问作者Slowat_Kela
相关产品推荐
相关产品推荐

