日本語フォントの設定(まとめ)

In [10]:
%matplotlib inline
import seaborn as sns
sns.set(font='IPAexGothic')
sns.plt.plot([0,1], [0,1]);  sns.plt.title('tofu - 豆腐')
Out[10]:
<matplotlib.text.Text at 0x11793948ba8>
In [2]:
import matplotlib.font_manager as fm
import pandas as pd
In [3]:
fonts = fm.findSystemFonts()
#fonts
# 'c:\\windows\\fonts\\ipaexg.ttf',
In [4]:
l = []
for f in fonts:
    font = fm.FontProperties(fname=f)
    l.append((f, font.get_name(), font.get_family()))
df = pd.DataFrame(l, columns=['path', 'name', 'family'])
In [5]:
df[df['path'].apply(lambda s: 'ipaexg' in s)]
Out[5]:
path name family
# http://qiita.com/keisuke-nakata/items/2309764d21438645f6b9
import matplotlib as mpl
import os
#print(mpl.matplotlib_fname())
site_packages = os.path.dirname(os.path.dirname(os.path.dirname(mpl.matplotlib_fname())))
#print('+ site_packages = {0}'.format(site_packages))
seaborn_dir = '{0}/seaborn'.format(site_packages)
#print('+ seaborn_dir = {0}'.format(seaborn_dir))
fonts_dir = '{0}/mpl-data/fonts/ttf'.format(os.path.dirname(os.path.dirname(mpl.matplotlib_fname())))
if 'ipaexg.ttf' in os.listdir(fonts_dir):
    print('+ {0} に\n日本語フォントがあります。'.format(fonts_dir))
    print('「1. 日本語フォントのインストール」は不要です。')
    print('「2. rcmod.pyの編集」から始めてください。')
if 'rcmod.py' in os.listdir(seaborn_dir):
    print('+ {0} に\nrcmod.py があります。'.format(seaborn_dir))

+ C:\Users\user_name\AppData\Local\conda\conda\envs\py35\lib\site-packages\matplotlib/mpl-data/fonts/ttf に
日本語フォントがあります。
「1. 日本語フォントのインストール」は不要です。
「2. rcmod.pyの編集」から始めてください。
+ C:\Users\user_name\AppData\Local\conda\conda\envs\py35\lib\site-packages/seaborn に

1. 日本語フォントのインストール

  • 【matplotlib】日本語の設定
    • 今回はIPAexフォントを使うことにします。ダウンロードして解凍すると、ipaexg.ttfというファイルがあるはずです。 それを、先ほど見つけたmatplotlibのデフォルト設定ファイルの置いてあるフォルダにあるfonts/ttf/フォルダにコピーしてください。
    • なお、このfontsフォルダは、matplotlibをバージョンアップなどすると書き換えられてしまうおそれがあるようです。 もしもそうした事態が起きたら、もう一度ipaexg.ttfをコピーしてください。
  • リリース IPA Fonts/IPAex Fonts 2 書体パック_IPAexフォント(ver.001.03) - IPAフォント - OSDN

2. rcmod.pyの編集

  • rcmod.py をエディターで開き、81行目、82行目の
def set(context="notebook", style="darkgrid", palette="deep",
        font="sans-serif", font_scale=1, color_codes=False, rc=None):

をコメントアウトし、下に

def set(context="notebook", style="darkgrid", palette="deep",
        font="IPAexGothic", font_scale=1, color_codes=False, rc=None):

の2行を追記してください。そうすると、

#def set(context="notebook", style="darkgrid", palette="deep",
#        font="sans-serif", font_scale=1, color_codes=False, rc=None):
def set(context="notebook", style="darkgrid", palette="deep",
        font="IPAexGothic", font_scale=1, color_codes=False, rc=None):

のようになります。

  • 次に192行目の
            "font.family": ["sans-serif"],

をコメントアウトし、下に

            "font.family": ["IPAexGothic"],

を追記してください。そうすると、

#            "font.family": ["sans-serif"],
            "font.family": ["IPAexGothic"],

のようになります。

3. キャッシュファイルの削除

  • ユーザ設定ファイルの存在するフォルダにあるfontList.cacheもしくはfontList.py3k.cacheを削除する。

Windowsの場合

  • C:\Users\ユーザー名.matplotlibの下の
    • fontList.cache
    • fontList.py3k.cache を削除します。

Ubuntuの場合

* rm ~/.cache/matplotlib/fontList.cache
* rm ~/.cache/matplotlib/fontList.py3k.cache

4. ブラウザーをすべて閉じて、jupyterを再起動する。

  • jupyterの再起動では足りない。
jupyter notebook