matplotlibで日本語が文字化けする(□豆腐)ときの対処
結論を先に。matplotlibで日本語が□(豆腐)になるのは、デフォルトのフォントに日本語の字形が含まれていないためです。japanize-matplotlib を入れて import するか、日本語フォントを font.family に指定すれば直ります。
UserWarning: Glyph 12354 (\N{HIRAGANA LETTER A}) missing from current font.原因
matplotlibの既定フォント(DejaVu Sans など)には日本語のグリフが入っていません。ラベルやタイトルに日本語を使うと、該当文字が表示できず□になります。
対処
- 最も簡単なのは japanize-matplotlib を使う方法です。import するだけで日本語フォントが設定されます。
import matplotlib.pyplot as pltimport japanize_matplotlibplt.plot([1, 2, 3]); plt.title("日本語のタイトル")- 手動で日本語フォントを指定することもできます。環境にあるフォント名を設定します。
import matplotlib.pyplot as pltplt.rcParams["font.family"] = "IPAexGothic"- フォントを入れたのに反映されないときは、matplotlibのフォントキャッシュを削除して再実行します。
import matplotlibimport shutil, osshutil.rmtree(matplotlib.get_cachedir())まとめ
- 原因は既定フォントに日本語グリフが無いこと
- japanize-matplotlib を import するのが最短
- 手動なら font.family に日本語フォントを指定
- 反映されなければフォントキャッシュを削除する