4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

matplotlibで自分の好きなフォントを入れる

Last updated at Posted at 2018-06-23

(急いでメモとして書いているので、修正が加わる場合があります。)

ここでは、matplotlibにオリジナルのフォントを使う場合についてまとめます。とりあえずmatplotlib使って色々図を作って見たけれど、フォントが気に入らないんだよなって人向けです。

とりあえず自分の環境は、以下の通りです。

MacOS High Sierra
version 10.13.5
Python 3.6.4 (default, Mar 9 2018, 23:15:03)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin

ダウンロードしたttfを使いたい

pythonで日本語化するなどの以下の記事が参考になります。
【matplotlib】日本語の設定

要点だけを言えば、
(1) IPAフォントなどをダウンロード
(2) 解凍して、ttfファイル達を以下で表示される場所に設置。


import matplotlib as mpl
mpl.matplotlib_fname()

/path-to-install/python3.6/site-packages/matplotlib/mpl-data/matplotlibrcと表示された場合、ダウンロード先は、
/path-to-install/python3.6/site-packages/matplotlib/mpl-data/fonts

(3) cacheとjsonの削除


mpl.mlp.get_cachedir()

で得られるdirectory内のfontList.cacheとfontList.jsonをremove。
fontList.jsonは中に、matplotlibが自ら探し出したfontの情報が書き込まれている。ここに書かれているfontであれば利用できる。

別プログラムのあのフォントが使いたい

前項の最後、に書いたfontList.jsonに任意のpathのフォントを読み込む。
ここでは、TeXLive2017でインストールした際に一緒に入っていたIPAフォントをmatplotlibで認識させる。そのためのpythonでのコードは以下の通り。ただし、IPAフォントのパスを/path-to-install/texlive/2017/texmf-dist/fonts/truetype/public/ipaexとしておく。
先にfontList.json, fontList.cacheをremoveする必要があるかもしれない。


from matplotlib import font_manager as fm, rc

path_to_install='/path-to-install/texlive/2017/texmf-dist/fonts/truetype/public/ipaex/'
font_files = fm.findSystemFonts(fontpaths=path_to_install) # pathにあるttfファイルを見つける
font_list = fm.createFontList(font_files) # フォントリストを作成
fm.fontManager.ttflist.extend(font_list) # matplotlibのフォントリストに追加

今、パス先のディレクトリ内には以下のttfファイルが含まれている。


ipaexg.ttf ipaexm.ttf ipag.ttf   ipagp.ttf  ipam.ttf   ipamp.ttf

この時、font_listprintすると、以下のように表示される(見やすくするために、改行している)。


[
<Font 'IPAexMincho' (ipaexm.ttf) normal normal 400 normal>, 
<Font 'IPAMincho' (ipam.ttf) normal normal 400 normal>, 
<Font 'IPAPGothic' (ipagp.ttf) normal normal 400 normal>, 
<Font 'IPAPMincho' (ipamp.ttf) normal normal 400 normal>, 
<Font 'IPAGothic' (ipag.ttf) normal normal 400 normal>, 
<Font 'IPAexGothic' (ipaexg.ttf) normal normal 400 normal>
]

これらのファイルがfontList.jsonに追加される。
読み込みができたとして、matplotlibのフォントの変更は、


rc('font', family='IPAPMincho')

として完了となる。
ちなみに図を作成する際に読み込みを失敗していたら、


/path-to-install/python3.6/site-packages/matplotlib/font_manager.py:1328: UserWarning: findfont: Font family ['IPAPMincho'] not found. Falling back to DejaVu Sans
  (prop.get_family(), self.defaultFamily[fontext]))

みたいなエラー構文が出る。


参考 :
https://stackoverflow.com/questions/35668219/how-to-set-up-a-custom-font-with-custom-path-to-matplotlib-global-font
https://matplotlib.org/api/font_manager_api.html

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?