keisukeのブログ

***乱雑です!自分用のメモです!*** 統計や機械学習の勉強と、読み物を書く練習と、備忘録用のブログ

【matplotlib】日本語の設定

Matplotlibで日本語を出力するのにかなり手間取ったのでメモ。 Windows, Python3を想定しています。

問題の説明

import matplotlib.pyplot as plt
plt.figure()
plt.xlabel('豆腐 - tofu')
plt.title('豆腐 - TOFU')

f:id:kaisk:20150215213810p:plain

日本語が文字化けして「□□」となってしまっています。日本語表示したいですね。

解決への道のり

  • matplotlibの設定ファイルの場所を探す
  • 日本語に対応したフォントのダウンロード
  • matplotlibの設定ファイルを書き換える
  • フォントのキャッシュの削除

matplotlibの設定ファイルの場所を探す

import matplotlib
matplotlib.matplotlib_fname()

を実行してみてください。 あなたのmatplotlibが現在参照している設定ファイルのパスが表示されます。 デフォルトでは、'python_install_folder\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'です。

さて、もしも現在参照している設定ファイルの場所がsite-packagesの下なら、matplotlibの設定ファイルは何もいじられておらずデフォルトのままです。 デフォルトの設定ファイルをいじるのはあまり良いことではありませんので、ユーザ設定ファイルを作りましょう。 見つけたデフォルト設定ファイル(matplotlibrcのことです)を、C:\Users\your_name\.matplotlib\以下にコピーしてください。matplotlibは、このフォルダにmatplotlibrcを見つけると、デフォルトの設定ファイルより優先します。

日本語に対応したフォントのダウンロード

今回はIPAexフォントを使うことにします。ダウンロードして解凍すると、ipaexg.ttfというファイルがあるはずです。 それを、先ほど見つけたmatplotlibのデフォルト設定ファイルの置いてあるフォルダにあるfonts/ttf/フォルダにコピーしてください。

なお、このfontsフォルダは、matplotlibをバージョンアップなどすると書き換えられてしまうおそれがあるようです。 もしもそうした事態が起きたら、もう一度ipaexg.ttfをコピーしてください。

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

先ほどコピーした、あなたのmatplotlibrcファイルを開いてください。

font.family : IPAexGothic

という行を追加してください。

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

これで設定完了です。 しかし、matplotlibは使うフォントのキャッシュを持っていて、それを削除しないと設定が読み込まれません。 デフォルト設定ファイルの存在するフォルダ、そしてユーザ設定ファイルの存在するフォルダにあるfontList.cacheもしくはfontList.py3k.cacheファイルを削除してください。

以上でおしまいです。

import matplotlib.pyplot as plt
plt.figure()
plt.xlabel('豆腐 - tofu')
plt.title('豆腐 - TOFU')

f:id:kaisk:20150215215727p:plain

無事、日本語が表示されるようになりました。