ITとかCockatielとか

技術のこととか。飼鳥(オカメインコ)のこととか。気になったこととか。基本的には備忘録。

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

個別に設定するのは面倒なので、以下でまとめて指定することもできる。

matplotlib rc

font = {'family':'IPAGothic'}
plt.rc('font', **font)