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()
Matplotlib 日本語文字化け

「ヶ月」の文字が白い四角になってしまっている。

フォントファイルのダウンロードとファイルの格納

配布されているIPAexフォントを下記サイトからダウンロードし解凍する。
IPAexフォント
解凍するとipaexg.ttfというファイルが得られる。

IPAexFont

この.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 folder

fontsフォルダの中にはttfフォルダがある。この中に先のipaexg.ttfを格納する。

ttf folder
スポンサーリンク

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()
文字化けが解決
スポンサーリンク