KIMUSON.DEV

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