サーバ上でcron登録して毎日plotした結果をpngで吐いてもらおうと思った。
普通にmatplotlibを入れて実行してみたところ、下記のようなエラーが出た。
TclError: no display name and no $DISPLAY environment variable
実行したコードは下記。
import matplotlib.pylab as plt plt.plot( [1, 2, 3] )
これは matplotlib.use('Agg') をセットすれば起こらなくなるらしい。
import matplotlib matplotlib.use('Agg') import matplotlib.pylab as plt plt.plot( [1, 2, 3] ) plt.savefig( 'foo.png' )
ちゃんとファイルが出力された。
ついでに出力するファイルのwidth/heightの調整について。inchとdpiで指定するらしいので、plt.figureでそのあたりの数値を指定してみる。
import matplotlib matplotlib.use('Agg') import matplotlib.pylab as plt plt.figure(figsize=(5.5, 4.5), dpi=100) plt.plot( [1, 2, 3] ) plt.savefig( 'foo.png' )dpiが100で 5.5, 4.5 を指定しているので、結果はwidth:550, height:450で出力される。