現象
CentOSでこんなコードを実行する。
test.py
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.show()
するとこんなエラーが出る。
$ python3 test.py
test.py:3: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
plt.show()
対策
tkinterをインストールする。
sudo yum install python3-tkinter
すると、以後はちゃんとグラフが表示される。
$ python3 test.py
原因
CentOSのPython3は、デフォルトでnon-GUIのAggしか入っていない。tkinterを入れてやると、GUI-backendのTkAgg
が有効になり、それを使ってくれるようになる。
ちなみに、記事によっては
import matplotlib
matplotlib.use('TkAgg')
のように、明示的にTkAgg
を指定する必要があると書いてあったりするが、僕の環境(CentOS Linux release 7.8.2003)では、python3-tkinter
を入れるだけで(Xが有効なら)自動的に使ってくれるようだ。