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

如何调整shap库生成可视化图像的宽高比

调整SHAP库生成图像宽高比的解决方法

你调用plt.gcf()生成空白画布是因为调用时机不对,需要先让SHAP完成绘图操作,再获取当前画布对象调整尺寸,或者提前创建指定比例的画布供SHAP绘图使用,以下是两种可直接运行的方案:

方法1:提前创建指定比例的画布(推荐)

在调用shap.summary_plot之前先初始化符合4:3比例的画布,SHAP会直接在该画布上绘制内容,无需后续调整:

import numpy as np
import pandas as pd  
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
import shap


boston = load_boston()
regr = pd.DataFrame(boston.data)
regr.columns = boston.feature_names
regr['MEDV'] = boston.target

X = regr.drop('MEDV', axis = 1)
Y = regr['MEDV']

fit = LinearRegression().fit(X, Y)

explainer = shap.LinearExplainer(fit, X, feature_dependence = 'independent')

shap_values = explainer.shap_values(X)

# 初始化画布,figsize参数传入(宽, 高),单位为英寸,8:6=4:3,可按需求等比缩放数值
plt.figure(figsize=(8, 6))
# 绘图时关闭show参数
shap.summary_plot(shap_values, X, show=False)
# 保存图像
plt.savefig('fig_tes1.svg', bbox_inches='tight', dpi=100)
# 关闭画布避免残留
plt.close()

方法2:绘图后调整画布比例

如果你需要在SHAP绘图完成后再调整尺寸,按以下顺序操作即可,不会出现空白画布问题:

# 先完成SHAP绘图,关闭show
shap.summary_plot(shap_values, X, show=False)
# 获取当前已绘制内容的画布对象
fig = plt.gcf()
# 调整为4:3的宽高比,例如宽10英寸、高7.5英寸
fig.set_size_inches(10, 7.5)
# 保存图像
plt.savefig('fig_tes1.svg', bbox_inches='tight', dpi=100)
plt.close()

注意事项

  • 不要在调用SHAP绘图函数之前执行plt.gcf(),此时当前画布没有任何绘制内容,就会返回你遇到的空白画布结果
  • figsize的宽高数值可按需求缩放,只要宽高比值为4/3即可符合要求

内容的提问来源于stack exchange,提问作者Jeremy K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:06:07