📈

Docker + Matplotlib + Noto Sans での日本語化

2021/12/20に公開

Notosans Install

参考:CentOSにNoto Sans CJK JPをインストール | Codebase Blog

$ wget https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip
$ unzip NotoSansCJKjp-hinted.zip -d /usr/share/fonts/NotoSansCJKjp
$ chmod 644 /usr/share/fonts/NotoSansCJKjp

OSのキャッシュ削除

$ sudo fc-cache -fv

Matplotlib側の対応

キャッシュ削除

参考:matplotlib にフォントが無いと怒られる場合の対処 - Qiita

$ rm ~/.cache/matplotlib/fontlist-300.json

Notebook上でのフォント指定

今使えるフォントを把握

import matplotlib.font_manager as fm
fonts = fm.findSystemFonts()
print([[str(font), fm.FontProperties(fname=font).get_name()] for font in fonts[:10]])

Outputはこんな感じで出てくるので,今回 Noto Sans CJK JPを指定.
[['/usr/share/texmf/fonts/opentype/public/lm/lmmonoproplt10-regular.otf', 'Latin Modern Mono Prop Light'], ['/usr/share/texmf/fonts/opentype/public/lm/lmmono9-regular.otf', 'Latin Modern Mono'], ['/usr/share/texmf/fonts/opentype/public/lm/lmsans9-regular.otf', 'Latin Modern Sans'], ['/usr/share/texmf/fonts/opentype/public/lm/lmromanunsl10-regular.otf', 'Latin Modern Roman Unslanted'], ['/usr/share/fonts/NotoSansCJKjp/NotoSansCJKjp-Medium.otf', 'Noto Sans CJK JP'], ['/usr/share/texmf/fonts/opentype/public/lm/lmroman6-regular.otf', 'Latin Modern Roman'], ['/usr/share/fonts/truetype/liberation/LiberationSerif-Italic.ttf', 'Liberation Serif'], ['/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf', 'Liberation Sans'], ['/usr/share/texmf/fonts/opentype/public/lm/lmroman10-italic.otf', 'Latin Modern Roman'], ['/usr/share/texmf/fonts/opentype/public/lm/lmromanslant12-regular.otf', 'Latin Modern Roman Slanted']]

利用するフォントを設定

from  matplotlib import rcParams
rcParams['font.family'] = 'Noto Sans CJK JP'

これで,Noto SansでのMatplotlibの設定が完了しました!

Discussion