matplotlibを扱う上でたまに遭遇するバグ
前書き
環境構築中にmatplotlibにバグが発生したので備忘録にまとめました。
matplotlibでグラフが表示されない問題
特にエラーを吐かないんですよね・・・
原因もわからないので調査しました。
spyderでプログラムを実行した時、
matplotlibで表示されるグラフがインラインに表示されません。
Agg→Qt5Agg or TkAgg
自分はAnaconda環境で導入したので、
Anaconda3フォルダのどこかに存在するmatplotlibrcファイルを探します。
仮想環境を作成している場合だとanaconda3/envsやlibの下に存在していると思います。
matplotlibの設定ファイルを修正します。
tkAggかqt5Aggを設定すると良いらしいです。
#### CONFIGURATION BEGINS HERE # the default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo # CocoaAgg MacOSX Qt4Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG # Template # You can also deploy your own backend outside of matplotlib by # referring to the module name (which must be in the PYTHONPATH) as # 'module://my_backend' #backend : agg backend : tkagg #もしくは backend : qt5agg
これでSpyderの再起動をしてプログラムを実行しました。
まだ出力されない場合
上記の状態でコードを動かすと、以下の文章が出ます。
Spyderはプロットを表示せず、このようなメッセージを表示します。「プロットペインのオプションメニューで、「インラインプロットをミュートする」のチェックを外してください。」
Spyderの[ツール]→[プロット]で、
プロット画面を表示させると、
"Mute plot inline"にチェックが入ってしまっているのでこのチェックを外します。
matplotlibで文字化けが発生
IPAexGothicフォントを使って解決
以下のサイトが分かりやすく丁寧でしたのでオススメです。
qiita.com
Seaborn
以下のサイトを参考にして
linus-mk.hatenablog.com
def set(context="notebook", style="darkgrid", palette="deep", font="sans-serif", font_scale=1, color_codes=False, rc=None):
"sans-serif"→"IPAexGothicに改変します。
def set(context="notebook", style="darkgrid", palette="deep", font="IPAexGothic", font_scale=1, color_codes=False, rc=None):
まだエラー
Jupyter Notebookを再起動してください。
キャッシュフォルダごと削除します。
Font family ['IPAexGothic'] not found. Falling back to DejaVu Sans.
fontList.py3k.cache だけでは改善しなかったので、.matplotlibごと削除します。
キャッシュフォルダですので、すぐに再び使い続けると新しい.matplotlibフォルダが生成されます。
rm -rf ~/.matplotlib
これで日本語表示が完了しました。