Matplotlibの日本語文字化けの解決法
Windows 10環境でAnaconda3 + Jupyter NotebookによりMatplotlibの関数を呼び出しグラフを描画した時、デフォルトのままだと日本語が文字化けしてしまう。 web上では様々な解決策が紹介されているが、わかりやすい解決方法がわかったので記録する。
文字化けの様子
次のコードを実行するとラベルが文字化けされた円グラフが表示される。
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1,2,3,4])
labels=["1ヶ月", "2ヶ月", "3ヶ月", "4ヶ月"]
plt.pie(x=x, labels=labels, autopct="%.2f%%", startangle=90, counterclock=False)
plt.axis("equal")
plt.show()
「ヶ月」の文字が白い四角になってしまっている。
フォントファイルのダウンロードとファイルの格納
配布されているIPAexフォントを下記サイトからダウンロードし解凍する。
IPAexフォント
解凍するとipaexg.ttfというファイルが得られる。
この.ttfファイルを格納する場所を特定する。
matplotlibrcというmatplotlibの設定ファイルを探すと特定できる。ファイルパスは以下のコマンドで出力できる。
import matplotlib
print(matplotlib.matplotlib_fname())
自分の環境の場合、以下のように出力された。
C:\Users\XXX\Anaconda3\envs\XXXX\lib\site-packages\matplotlib\mpl-data\matplotlibrc
このファイルが置かれているmpl-dataフォルダを開くと、fontsフォルダがある。
fontsフォルダの中にはttfフォルダがある。この中に先のipaexg.ttfを格納する。
Jupyter Notebookの再起動
開いているJuper Notebookを閉じ、もう一度Anaconda NavigatorからLaunchし、以下のコードを実行すると正常に日本語がラベルに描画された。
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1,2,3,4])
label=["1ヶ月", "2ヶ月", "3ヶ月", "4ヶ月"]
plt.rcParams["font.family"] = "IPAexGothic"
plt.pie(x=x, labels=label, autopct="%.2f%%", startangle=90, counterclock=False)
plt.axis("equal")
plt.show()