【Python】matplotlibで日本語フォントを使用する

2022-03-18matplotlib,python

Pythonでグラフを描くときにお世話になるmatplotlib。多機能で大変便利なのですが、初期状態では日本語フォントが表示できません。matplotlibで日本語フォントを使う方法について調べ、まとめてみました。

環境

  • Lubuntu Linux 20.04 LTS
    • python 3.8.10
    • matplotlib 3.3.4
  • Windows10
    • python 3.8.5
    • matplotlib 3.3.2

matplotlibで使用されるフォントを確認する

matplotlibで現在使用されているフォントを確認するには、次のようにします。

import matplotlib
print(matplotlib.rcParams['font.family'])

出力:
['sans-serif']

おそらく結果が初期設定のsans-serifとなっているはずです。この場合DejaVuというフォントが使われ、日本語を表示することができません。これを変更する必要があります。

matplotlibの設定ファイルを確認する

matplotlibはグラフを表示するための設定をmatplotlibrcというファイルから読み込みます。今読み込んでいるmatplotlibrcの場所を確認するためには、次のようにします。

import matplotlib
print(matplotlib.matplotlib_fname())

出力:
/usr/local/lib/python3.8/dist-packages/matplotlib/mpl-data/matplotlibrc

参照しているのが自分のホームディレクトリではない場合には、~/.config/matplotlibにこのファイルをコピーし、それを編集します。

Windowsの場合は、自分で環境変数HOMEを設定して独自のホームディレクトリを指定していなければ、C:\Users\(ユーザー名)\.matplotlibというディレクトリが作成されているはずです。ここにmatplotlibrcをコピーします。

cp /usr/local/lib/python3.8/dist-packages/matplotlib/mpl-data/matplotlibrc ~/.config/matplotlib

コピーしたファイルを開き、font.familyという行を探します。行頭が#で始まっている場合はコメントアウトされているので、#を削除します。
そしてfont.familyに使用したい日本語フォントを設定します。

matplotlibrcの画像

これで使えるようになるはずです。

Windowsで表示されない場合

Windowsで上記設定をしても表示されないことがあります。この場合はmatplotlibが指定されたフォントを見つけられていないことが原因です。

.matplotlibディレクトリ内にfontlist-v{バージョン}.jsonというファイルがあり、この中に利用可能なフォントの一覧が記録されています。この中のttflistプロパティに使用したい日本語フォントを追加してください。json形式で記述します。

fontlistの画像

まとめ

matplotlibで日本語フォントを使用する方法について説明しました。matplotlibrcにはフォントの他にも多数の設定項目があります。今後機会がありましたら記事にしたいと思います。


Numpy等の基本的な使い方について説明した書籍です。第5章でMatplotlibの使い方についても説明されています。

matplotlib,python

Posted by izadori