Python
matplotlib

matplotlibで描画したグラフの文字化けを解消する

環境

Python 3.5.2 :: Anaconda custom (64-bit)
macOS Sierra version 10.12.6

問題

これの豆腐(□)を直したい。

ホールドアウト誤り率SVM100.png

自分の場合、描画される時は日本語入力されるが保存した後に開くと豆腐になってしまっていた。。。悲しみ。。。。

解決

下記サイトからIPAexフォントをインストールします。
http://ipafont.ipa.go.jp/node17#jp

1.png

↓↓↓

2.png

インストールしたipaexg.ttfファイルをLibrary/Fontsへコピーします。

$ cp ~/Downloads/ipaexg00301/ipaexg.ttf ~/Library/Fonts/

次に下記コマンドで設定ファイルの場所を確認します。

>>> import matplotlib
>>> print(matplotlib.matplotlib_fname())
/Users/userName/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc

次は設定フォルダの場所を確認します。

>>> matplotlib.get_configdir()
'/Users/userName/.matplotlib'

おそらく設定フォルダはuser直下の隠しファイルになっているかと思います。
この中に先ほどの設定ファイル(matplotlibrc)をコピーします。
そして、その中に記述してある font.family を IPAexGothic へ書き換えます。

font.family : IPAexGothic

デフォルトはsans-serifですね。
また、僕はなぜか font.family 自体がコメントアウトされていたのでそれも外しました。
最後に再度pythonコンソールを起動し、設定ファイルが書き換わったか確認します。

>>> import matplotlib
>>> print(matplotlib.rcParams['font.family'])

この時、['IPAexGothic'] と表示されていれば解決です。

figure_1.png

こんな感じで豆腐が消えてちゃんと日本語表示されます。

もし、上記コマンド実行後、['sans-serif']と表示されるようであれば、設定フォルダ内の fontList.py3k.cache もしくは fontList.cache を削除してから再度上記コマンドを実行してください。

参考

matplotlib のグラフに日本語を表示する方法(文字化け対応)

Macにおけるmatplotlibの日本語表示

【matplotlib】図解!日本語フォントの設定方法