ライブラリ無しフォントインストール無しキャッシュ削除無しで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フォントが無かった場合は、、、
仕方ないね。別途インストールしよう。
0 件のコメント:
コメントを投稿