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