LoginSignup
2
4

More than 1 year has passed since last update.

SHAPでplotした画像を保存すると真っ白になってしまったときの対処法

Last updated at Posted at 2022-07-22

画像が真っ白になる理由

SHAPのsummary_plotで描画したグラフを保存したいとき、下のように書くと真っ白な画像が保存されてしまう。

shap.summary_plot(
  shap_values=shap_values,
  features=X,
  feature_names=X.columns,
)

plt.savefig("image.png") # 画像を保存

この理由は以下の通り。

  1. 実はsummary_plotの内部でplt.show()が実行されている。
  2. plt.show()でグラフを描画すると、そのグラフのデータは消されてしまうため、その後にplt.savefig()を実行しても保存する画像のデータがなくなってしまっている。
  3. だから、仕方なく真っ白な画像が保存されてしまうという訳である。

したがって、summary_plotの内部ではplt.show()は実行しないで、plt.savefig()した後にplt.show()を実行すればよい。

解決法

summary_plotのshowというパラメータをFalseにすれば、内部のplt.show()が実行されないので、下のように書けば解決できる。デフォルトではshowTrueになっている。

shap.summary_plot(
  shap_values=shap_values,
  features=X,
  feature_names=X.columns,
  show=False, # ←これを追加
)

plt.savefig("image.png") # 画像を保存
plt.show() # グラフを描画

dependence_plotforce_plotwaterfall_plotにもshowというパラメータがあるので、これらに関しても同様にして解決できる。

参考までにsummary_plotの公式リファレンスを貼っておくので、パラメータについて詳しく知りたい方はどうぞ。

shap.summary_plot

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4