リモート環境でmatplotlib.pyplot.plotを実行
DISPLAY変数がないリモート環境でmatplotlib.pyplot.plotを実行しようとすると
RuntimeError: Invalid DISPLAY variable
のような例外が出てしまいます。次の2パターンのいずれかで対策できます。
import matplotlib
import os
if "DISPLAY" is not in os.environ:
  matplotlib.use("Agg")
from matplotlib import pyplot
以上の方法がよく採用されますが、isortなどパッケージのソート順をいじるツールなどと相性が悪いです。次のように書けば、追加の記載なしでisortなどが問題なく使えます。ただし、程度の多少はわかりませんが、オーバーヘッドはあります。
from matplotlib import pyplot
import os
if "DISPLAY" is not in os.environ:
  pyplot.switch_backend("Agg")
図を複数保存
図を複数保存する際にもトラップがあります。次のpyplot.close()を書かないと2つ目以降のグラフが以前plotしたグラフの上に書かれてしまいます。**savefigはshowと違ってキャンバスを消してくれません。+**忘れないようにしましょう。
windows = (scipy.signal.hamming, scipy.signal.hann, scipy.signal.blackman)
for window in windows():
  pyplot.plot(window(256))
  pyplot.savefig(window.__name__ + ".svgz")
  pyplot.close()