如何使用 Matplotlib 为 shap.plots.force 的绘图添加标题?
How to add title to the plot of shap.plots.force with Matplotlib?
我想使用 Matplotlib 对我的力图(由 shap.plots.force
创建)添加一些修改,例如添加标题,使用紧凑的布局等。但是,我尝试添加标题,但标题没有显示。知道为什么以及如何使用 Matplotlib 添加标题吗?
import numpy as np
import shap
import matplotlib.pyplot as plt
myBaseline=1.5
shap_values_0 = np.array([-1, -4, 3])
test_point_0 = np.array([11, 12, 13])
features_names = ['a1','a2','a3']
shap.plots.force(myBaseline,shap_values_0,test_point_0,features_names,matplotlib = 1)
plt.suptitle("This is my title") # It doesn't show up, why?
fig = plt.gcf()
fig.canvas.draw()
plt.close()
我必须在 shap.plots.force
添加 show=0
,即
shap.plots.force(myBaseline,shap_values_0,test_point_0,features_names,matplotlib = 1, show=0)
我不知道它为什么有效,但它确实有效。
force_plot
are中的最后几行:
if show:
plt.show()
else:
return plt.gcf()
因此,如果您设置 show = False
,您可以将准备好的 SHAP 图作为 figure
对象并像往常一样根据您的需要进行自定义:
import shap
myBaseline = 1.5
shap_values_0 = np.array([-1, -4, 3])
test_point_0 = np.array([11, 12, 13])
features_names = ["a1", "a2", "a3"]
shap.plots.force(
myBaseline, shap_values_0, test_point_0, features_names, matplotlib=True, show=False
)
plt.title("This is my title", y=1.75)
plt.show()
我想使用 Matplotlib 对我的力图(由 shap.plots.force
创建)添加一些修改,例如添加标题,使用紧凑的布局等。但是,我尝试添加标题,但标题没有显示。知道为什么以及如何使用 Matplotlib 添加标题吗?
import numpy as np
import shap
import matplotlib.pyplot as plt
myBaseline=1.5
shap_values_0 = np.array([-1, -4, 3])
test_point_0 = np.array([11, 12, 13])
features_names = ['a1','a2','a3']
shap.plots.force(myBaseline,shap_values_0,test_point_0,features_names,matplotlib = 1)
plt.suptitle("This is my title") # It doesn't show up, why?
fig = plt.gcf()
fig.canvas.draw()
plt.close()
我必须在 shap.plots.force
添加 show=0
,即
shap.plots.force(myBaseline,shap_values_0,test_point_0,features_names,matplotlib = 1, show=0)
我不知道它为什么有效,但它确实有效。
force_plot
are中的最后几行:
if show:
plt.show()
else:
return plt.gcf()
因此,如果您设置 show = False
,您可以将准备好的 SHAP 图作为 figure
对象并像往常一样根据您的需要进行自定义:
import shap
myBaseline = 1.5
shap_values_0 = np.array([-1, -4, 3])
test_point_0 = np.array([11, 12, 13])
features_names = ["a1", "a2", "a3"]
shap.plots.force(
myBaseline, shap_values_0, test_point_0, features_names, matplotlib=True, show=False
)
plt.title("This is my title", y=1.75)
plt.show()