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の設定ファイルを書き換える
ユーザー設定ファイルmatplotlibrc
のfont.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.json
のname
属性)で、matplotlibrc
のfont.fmaliy
を書き換えてください
-
windowsでttf形式の提供されているフォントの多くが、リコーフォントです。リコーフォントの商用使用は、追加料金がかかる可能性があるので、十分注意して使ってください。 ↩