matplotlibのフォントエラー【Jupyter Notebook】
JupyterNotebookの実行時に以下のようなエラーが出た。
指定しているフォントが見つからない、ということ。
C:\Users\ユーザー名\Anaconda3\lib\site-packages\matplotlib\font_manager.py:1316: UserWarning: findfont: Font family ['見つからないフォント名'] not found. Falling back to 適用したフォント名
フォントはどこに格納されている?
環境によりことなるが、Windowsでは以下のパス。
不足しているフォントが格納されているかを確認する。
C:\Users\ユーザー名\Anaconda3\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
フォントはどこで指定されている?
C:\Users\ユーザー名\Anaconda3\Lib\site-packages\matplotlib\mpl-data
にある matplotlibrc
というファイル。
font.family : IPAexGothic
のように指定されている。
matplotlibのフォントキャッシュ
フォントが存在してい、フォントの指定が間違っていない場合、matplotlibのキャッシュが悪さをしていることがある。
C:\Users\ユーザー名.matplotlib
fontList.jsonなどを削除する。(実行時に再生成される)
それでもダメな場合
matplotlibの実行により生成された fontList.json
の中身を見て、フォント名の指定とファイルの整合性がとれているか確認する。
たとえばこんな感じ。
{ "fname": "C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\\fonts\\ttf\\ipag.ttf", "name": "IPAGothic", ・・・ },
不整合があったら、matplotlibrc
の記述を修正。
今回はIPAGothic
に修正で解決。
他の解決方法
フォントを直接指定する。
plt.title('あいうえお', fontname="IPAGothic")
使えるフォントは以下で確認。
C:\Users\ユーザー名.matplotlib\fontlist-v330.json
個別に設定するのは面倒なので、以下でまとめて指定することもできる。
font = {'family':'IPAGothic'} plt.rc('font', **font)