Heroku 上でも matplotlib のグラフ描写をする
- # Python
- # Heroku
2018年09月26日
Heroku でデプロイしたアプリ上で、matplotlib のグラフ描写するのに結構詰まったので対処法をまとめておきます
エラー吐かれてそもそもデプロイできない
具体的には
ImportError: No module named tkinter
を吐かれました
解決策は、tkinter(Mac 標準)ではなく Agg を利用するように変更することです
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
あるいは, matpotlibrc をカレントディレクトリに設置して
backend: Agg
と記述しておいても良いです
こちらの方法なら、毎回記述する必要もありません
グラフの日本語が文字化けする
デフォルトのフォントが日本語対応してないのが原因みたいです
適切なフォントをダウンロードして、matplotlib 側で指定していきます
IPAex フォント ダウンロードページより、IPAex ゴシックをダウンロードして、ipaexg.ttf ファイルを <project>
/.fonts/ に移動させます
その上で
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
fontprop = FontProperties(fname='.fonts/ipaexg.ttf', size=10)
としておきます あとは matplotlib でグラフ描写するときに
plt.xticks(<X軸リスト>, <X軸名前リスト(日本語)>, font_properties=fontprop)
という風に指定してあげれば OK です
で、これも matpotlibrc に書いてしまえばめんどくさくなくて良きです
backend : Agg
font.family : IPAexGothic