matplotlib の日本語の文字化け(豆腐)問題解決方法
matplotlib を使っていて日本語の文字化け(豆腐)の解決に苦労したので手順をメモ。
環境
Python 3.7.1
macOS Mojave 10.14.1
日本語の文字化け(豆腐)問題
下のグラフのX軸とグラフタイトルが文字化け(豆腐:◻︎◻︎◻︎◻︎)になっています。
この問題を解決したい。
matplotlibの設定ファイルの場所を探す
import matplotlib
matplotlib.matplotlib_fname()
僕の環境では以下っぽい。
******/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
日本語フォントをダウンロード
IPAexフォントをダウンロード。
ダウンロードして解凍するとipaexg.ttfというファイルがあるはず。
それを、さっき調べたmatplotlibの設定ファイルが置いてあるフォルダ内のfonts/ttf/フォルダにコピーする。
フォントキャッシュの削除
matplotlibはフォントキャッシュを持っていて、それを削除しないと設定が再読み込みされないらしい。
# フォントキャッシュの場所を探す
import matplotlib as mpl
mpl.get_configdir()
僕の環境では以下っぽい。
/Users/<ユーザー名>/.matplotlib
とりあえず存在しているファイルを削除してみる。
# ファイルとフォルダ
$ rm fontlist-v300.json
$ rm -r tex.cache
そしてpythonにてIPAPGothicを指定して再度グラフ表示。
# フォントを指定
from matplotlib import pyplot as plt
plt.rcParams['font.family'] = 'IPAPGothic'
結果
豆腐のまま。。。。
解決
いろいろ四苦八苦していたら、
fontlist-v300.json の中身を見ると以下の記述。
{
"fname": "fonts/ttf/ipaexg.ttf",
"name": "IPAexGothic", # ここ #
"style": "normal",
"variant": "normal",
"weight": 400,
"stretch": "normal",
"size": "scalable",
"__class__": "FontEntry"
},
フォント名がIPAexGothicだと気がつく。
ネット情報に頼り意味もわからずコピペ(IPAPGothicを指定)していたことが原因。
# フォントを指定
from matplotlib import pyplot as plt
plt.rcParams['font.family'] = 'IPAexGothic'
やっと日本語が表示されるようになりました。
おしまい