When displaying summary_plot, the color bar does not show.
shap.summary_plot(shap_values, X_train)
I have tried changing plot_size. When the plot is higher the color bar appears, but it is very small - doesn't look like it should.
shap.summary_plot(shap_values, X_train, plot_size=0.7)
Here is an example of a proper looking color bar.
Does anyone know if this can be fixed somehow?
How to reproduce:
import pandas as pd
import shap
import sklearn
from sklearn.ensemble import RandomForestRegressor
# a classic housing price dataset
X,y = shap.datasets.boston()
# a simple linear model
model = RandomForestRegressor(max_depth=6, random_state=0, n_estimators=10)
model.fit(X, y)
shap_values = shap.TreeExplainer(model).shap_values(X)
shap.summary_plot(shap_values, X)
In this case, the color bar is displayed, but it is very small. I have chosen such an example to make it easy to retrieve the data.
I had the same problem as you did, and I found that the solution was to downgrade matplotlib to 3.4.3.. It appears SHAP isn't optimized for matplotlib 3.5.1 yet.
As mentioned above, it seems that the handling of colorbar or box aspect ratio has been changed in matplotlib.pyplot version 3.5. However, you can correct that.
shap.summary_plot(..., show=False)
to allow altering the plotplt.gcf().axes[-1].set_aspect(1000)
plt.gcf().axes[-1].set_box_aspect(1000)
This gives you the old result back. If you want to make the colorbar thicker, set the aspect to 100.
I had a similar issue and I was using max_display=10. The below code solved my problem:
plt.gcf().axes[-1].set_aspect(100)
plt.gcf().axes[-1].set_box_aspect(100)