【Python】matplotlibで日本語フォントを使用する
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に使用したい日本語フォントを設定します。
これで使えるようになるはずです。
Windowsで表示されない場合
Windowsで上記設定をしても表示されないことがあります。この場合はmatplotlibが指定されたフォントを見つけられていないことが原因です。
.matplotlibディレクトリ内にfontlist-v{バージョン}.json
というファイルがあり、この中に利用可能なフォントの一覧が記録されています。この中のttflist
プロパティに使用したい日本語フォントを追加してください。json形式で記述します。
まとめ
matplotlibで日本語フォントを使用する方法について説明しました。matplotlibrc
にはフォントの他にも多数の設定項目があります。今後機会がありましたら記事にしたいと思います。
Numpy等の基本的な使い方について説明した書籍です。第5章でMatplotlibの使い方についても説明されています。
ディスカッション
コメント一覧
まだ、コメントがありません