ライブラリ無しフォントインストール無しキャッシュ削除無しでmatplotlibを日本語化

2020/08/23

Python

t f B! P L

ライブラリ無しフォントインストール無しキャッシュ削除無しでmatplotlibを日本語化

jupyter labでmatplotlibを使い、日本語を表示しようとすると□(通称:豆腐)に文字化けする問題。
 
調べると

  • よしなに解決してくれるライブラリをインストールする
  • 日本語フォントをダウンロードする
  • matplotlibのキャッシュを削除する

私のお気持ちとしては

  • どれもファイルレベルの扱いがあって色々めんどくさい
  • コード上の設定だけで解決したい
  • 文字化けしなければどんな日本語フォントでもいい

ソリューション

つまり、OSにインストール済みで、matplotlibがすでに認識できている、日本語フォントを使用すればよい
 
そのために以下のコードを実行する。
Ubuntuで動作確認済み。他のOSで動くかは知らん。

import matplotlib.pyplot as plt
from matplotlib import font_manager as fm

# matplotlibが認識してるフォントPATH一覧てきなもの
fonts = fm.findSystemFonts()

# 日本語フォントはだいたいファイル名に"CJK"を含む
jp_fonts = [f for f in fonts if "CJK" in f]
# print(jp_fonts)

# iは何でもよい
i = 0
# PATH
print(jp_fonts[i])
# フォント名
# ここで取得した名前をrcParamsにセットする必要がある
font_family = fm.FontProperties(fname=jp_fonts[i]).get_name()
print(font_family)

# セット
plt.rcParams['font.family'] = font_family
print(plt.rcParams['font.family'])

詳細はコメントの通り。 `jp_fonts` の中から好きなフォントを選べば良い。

OSにCJKフォントが無かった場合は、、、
仕方ないね。別途インストールしよう。

QooQ