概要

サーバ上でcron登録して毎日plotした結果をpngで吐いてもらおうと思った。

@CretedDate 2014/09/27
@Versions Python2.7.6 pandas0.14.1-2

サンプルコード

普通に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' )

ちゃんとファイルが出力された。

plot結果

width/height調整

ついでに出力するファイルの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で出力される。