matplotlib で plt.show() するとウィンドウは開いてもグラフが描画されない
matplotlib で plt.show() するとウィンドウは開いてもグラフが描画されない、という問題が発生しました。
plt.show() で ウィンドウが開かない、というはよくあるパターンで大体が描画の際のバックエンドの指定だと思います (https://qiita.com/yoshizaki_kkgk/items/bcb45e3bc936ec49ef00)。
今回は、それとは異なった現象・原因であったため残しておきます。
結論
どうやら tk のバージョンに起因するようです。
tk 8.6.8 and tk 8.6.9 build 0 and build 1000 are fine.
tk 8.6.9 build 1001 and build 1002 are not.
macOS 10.14.5 (18F132)
対処
私は anaconda を使っており、tk のダウングレードなどで他のパッケージへの影響がわからなかったため、新たに conda 環境を作り直しました。
こういう場合は anaconda は本当に楽だなと思います。
$ conda create -n py36_base python=3.6 $ conda info -e # conda environments: # base * /anaconda3 py36_base /anaconda3/envs/py36_base $ source activate py36_base $ conda install ipython ipdb $ conda install pandas matplotlib seaborn $ conda install scikit-learn $ conda list | grep tk tk 8.6.8 ha441bb4_0 # 動作確認 # 以下のサンプルを実行できることを確認します。 # sklearn + matplotlib https://scikit-learn.org/stable/auto_examples/plot_multilabel.html#sphx-glr-auto-examples-plot-multilabel-py
デフォルトでは tk=8.6.8 であったことから、どうやら他のパッケージをアップグレードした拍子に tk も 8.6.9 に上げてしまったようでした。