Posted at

matplotlib/seabornのグラフで日本語化ける問題

※AdventCalendar埋め投稿です。Python その2カレンダーの8日目、 @kirk3110 さんの代理として投稿します。もしご準備されていましたら取り下げますのでご連絡を。)


やること

pythonのデファクトなグラフ化ライブラリmatplotlibとそのラッパーseabornを使ってグラフ作ると日本語が化けることがあるのでその対処法まとめです。

特にMacの環境では文字化けすることが多いと思います。


原因


  1. 日本語フォントが入っていない

  2. 日本語フォント入ってても設定ファイルで指定されていない

  3. 日本語フォント設定してもキャッシュがあってなかなか反映されない

これらを一つずつ対応していきます。


対処


日本語フォント入れる


ダウンロード

ここのを使ってる人が多いらしい。。。

https://ipafont.ipa.go.jp/

ipaexg00301.zipをダウンロードして、ipaexg.ttfを取得。


matplotlibのfontフォルダに入れる

import matplotlib as mpl

print(mpl.matplotlib_fname())

↑これで表示される所のに移動し、font/ttf/に入れます。

python/lib/site-packages/matplotlib/mpl-dataとかだと思いますが、pyenvなどの環境分離ツール使ってる場合は~/.pyenv/...配下だったりするので注意)


seabornの設定ファイル変更

引き続きsite-packages/seaborn/rcmod.pyを編集

92行付近、のfont=""の部分を"IPAexGothic"にする

def set(context="notebook", style="darkgrid", palette="deep",

font="IPAexGothic", font_scale=1, color_codes=True, rc=None):

203行付近、font.familyも"IPAexGothic"にする

"font.family": ["IPAexGothic"],


matplotlibのキャッシュ消す

~/.matplotlib/にキャッシュやら何やらがあるので全部消しちゃう。

rm -rf ~/.matplotlib/*

あとはimport matplotlibをやり直して日本語表示されたら成功です。

以上、ちょっとした小ネタでした。