matplotlibでデフォルトで日本語を表示可能にする

matplotlibで日本語を表示させようとすると、デフォルト設定ではDejaVu Sansという日本語が入っていないフォントが選択されるので、豆腐になります。

で、それを解消するときに参考にしたサイトがこれなんですが、ほぼ完ぺきなんですが少しだけ情報が抜けていました。

これは、その補足です。

目標

少し設定をいじるだけで日本語でグラフを表示可能です。なので、目標の1つ目は

  • OSにすでにある日本語を含むフォントを、matplotlibのデフォルト出力フォントにする

です。
ですが、既存のフォントが気に食わないときもあるかと思います。なので、次の目標は、

  • 新しいフォント(例えば、IPAexゴシックなど)を、matplotlibのデフォルト出力フォントにする

としました。

環境

私が日本語にしたときは、こんな環境でした

  • windows10
  • python3
    • pythonは、公式のインストーラからインストール(VisualStudio経由やAnaconda経由ではない)
  • matplotlib 2.1.0
    • pip経由でインストール

上記に当てはまらない人は、各種フォルダのパスが違ってきます。
記載してあるコマンドで、フォルダのパスを確かめながら進めてください。

では、次からやり方を記載していきます

OSにすでにある日本語を含むフォントを、matplotlibのデフォルト出力フォントにする

OSにttfの形式で格納されているフォント1は、すべてmatplotlibは認識しています。
そういうフォントでいいやという人は、下記のステップでmatplotlibのデフォルト出力フォントを変更できます

  • matplotlibの設定ファイルの場所を探す
  • matplotlibの設定ファイルをユーザー設定フォルダにコピー
  • matplotlibの設定ファイルを書き換える
  • フォントのキャッシュの削除

matplotlibrcの場所を探す

matplotlibrcというmatplotlibの設定ファイルを探します。

下記で調べられますし、

import matplotlib as mpl
mpl.matplotlib_fname()

windowsなら多くの人は、

C:\Users\{your_name}\AppData\Local\Programs\Python\Python{version}\lib\site-packages\matplotlib\mpl-data\matplotlibrc

です。

matplotlibrcをユーザー設定ファイルを置くフォルダにコピー

mpl.matplotlib_fname()にあるmatplotlibrcは、もしもの時のバックアップに使いたいので、ユーザー設定ファイルを置くフォルダにコピーします。

ユーザー設定ファイルを置くフォルダは、
公式曰く、

import matplotlib as mpl
mpl.get_configdir()

です。なお、windowsはデフォルトで下記です。

C:\Users\{your_name}\.matplotlib\

matplotlibの設定ファイルを書き換える

ユーザー設定ファイルmatplotlibrcfont.familyという部分を書き換えます。

例えば、「Arialを使いたいならArial」と、「游明朝を使いたいならYu Mincho」と記載してください。

どんなフォントが使えて、どんな名前で使えるのかは、ユーザー設定ファイルのあるフォルダのfontList.jsonに書いてあります。

フォントキャッシュの削除

フォントキャッシュがあるなら削除しましょう。そうしないと、キャッシングされたフォントを使うことになります。
ユーザー設定ファイルのあるフォルダにある

  • ``fontList.cache
  • ``fontList.py3k.cache

などを削除すればOKです(ないならないで、大丈夫です)

もしもそこにない場合は、下記コマンドでキャッシュの位置を調べてください

import matplotlib as mpl
mpl.get_cachedir()

以上で、設定したフォントを使えるようになるはずです。
次は、matplotlibが認識していないフォントの使いかを見てみます

新しいフォントを、matplotlibのデフォルト出力フォントにする

今回は、「matplotlibが認識していないフォント(例えば、msGothic)などを、matplotlibのデフォルト出力フォントにする」ことを見ていきます

これは、次のステップできます

  • フォントをインストールする
  • フォントをmatplotlibに認識させる
  • matplotlibrcを書き換える

フォントをインストールする

通常のフォントインストールと同じです。
windowsならフォントファイルをダブルクリックするだけです。

フォントをmatplotlibに認識させる

fontList.jsonを削除してください。このファイルは、matplotlibが、matplotlibのフォントディレクトリとシステムのフォントディレクトリをスキャンして自動生成しています。なので、fontList.jsonがない状態でplotを実行して、新しくインストールしたフォントが認識されたfontList.jsonが自動で生成してください。

matplotlibrcを書き換える

fontList.jsonに新しくインストールしたフォントの設定が追加されているはずです。
そのフォント名称(fontList.jsonname属性)で、matplotlibrcfont.fmaliyを書き換えてください


  1. windowsでttf形式の提供されているフォントの多くが、リコーフォントです。リコーフォントの商用使用は、追加料金がかかる可能性があるので、十分注意して使ってください。 

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.