matplotlib.use('Agg')するときの注意点

GUIがない環境で
_tkinter.TclError: no display name and no $DISPLAY environment variable
みたいなエラーに遭遇した。
ぐぐると、backendの設定をAggにすればよい的な回答があった。

(普段はmatplotlibrcに設定してあるんだけど、ちょっと別環境だったので・・・)そういえば、そうだったと思い出したところまでは、よかった。


けど、少しハマってしまった。ちゃんとつぶさに読めばよかったんだろうけど、順番なんて気にしていなかったのが敗因。

import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('Agg')

はダメで、

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

で、OK. pyplotが呼ばれる(importされる?)前に、matplotlib.use('Agg')をしないといけないところが要注意。


こう書いちゃうと、E402 module level import not at top of fileで、flake8に怒られてしまう・・・。

参考

qiita.com