MacでAnacondaを使ってPython環境を構築しMatplotlibでグラフを描画すると日本語が文字化けしてしまいます。
上の図の赤枠のように日本語部分が文字化けして「□」になっています。これはMatplotlibが使うフォントが日本語に対応していないためで適切なフォントを入れることで解消することができます。
実行環境
以下の環境で動作をさせています。
- Mac: MacBook Pro 2017
- OS: Mojave 10.14.5
- Anaconda 2018.12版
日本語フォントのダウンロード
まず日本語フォントをダウンロードします。無料の日本語フォントを公開している「IPAexフォント/IPAフォント」にアクセスしダウンロードページからIPAexフォントをダウンロードします。
ここでは「IPAexゴシック(Ver.004.01)フォント」(ipaexg00401.zip)をダウンロードします。
IPAexゴシックフォントのコピー
ダウンロードしたzipファイルを解凍すると
- ipaexg.ttf
- IPA_Font_License_Agreement_v1.0.txt
- Readme_ipaexg00401.txt
の3つのファイルができます。
フォントファイルである「ipaexg.ttf」をMatplotlibのフォントフォルダ(/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/)にコピーします。
$ cp ipaexg.ttf /anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
Matplotlibの設定
Matplotlibの設定ファイル(/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc)のフォント設定を変更します。
$ vi /anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
設定ファイルの「#font.family」から始まる行を検索し
#font.family : sans-serif
を
font.family : IPAexGothic
に書き換え保存します。(コメント行を示す「#」を削除する必要があります)
動作確認
Jupyter notebookを起動しMatplotlibで日本語を含むグラフを描画してみます。
import matplotlib.pyplot as plt plt.bar(x=['1月', '2月', '3月'], height=[1, 1.4, 1.2]);
なお、設定直後はフォントが見つからないというエラーが出ることがあります。
これはMatplotlibのキャッシュが残っているためで一度、Jupyter notebookを終了し
$ rm -rf ~/.matplotlib/
とキャッシュを削除してからJupyter notebookを起動すると正しくフォントが読み込まれるようになります。