筆者の使っているモノ。
・Macbook
・Jupiterlab Desktop(エディタ)
・Perplexity.ai(生成AI。chatGPTみたいなやつ)
matplotlibライブラリ(python)を使ってBTCUSDTの価格を折れ線グラフ化しようと思ってコード実行したらnot foundエラーが出てしまいました。
Perplexity.ai曰くフォントがインストールされていないかもしれないということなのでフォントリストを確認します。
【フォントリストを確認するコード】
import matplotlib.font_manager as fm
# 利用可能なフォントのリストを表示
for font in fm.findSystemFonts(fontpaths=None, fontext='ttf'):
print(font)

フォントリストの一部
なんとなくヒラギノ角ゴシック W7をチョイス。
しかしエラーは解消されず。
提案されたmatplotlibのキャッシュクリアをやってみてもダメ。
文字化け…
いろいろプロンプトを投げてみますが堂々巡りで解決する見込みなし。さて、どうしましょうかね…これ。
埒が明かないのでググってみた
今最先端の検索技術である生成AIはダメだったので、ひと世代前の検索技術「ググる」に頼ってみます。
テキトーにググって一番上に表示されたサイト(stackoverflow)に「pip install japanize-matplotlibしたらエラー直った」的な文言がありました。(この人のはsyntax errorだったので私の状況とは少し違いますが)
藁にも縋る思いでJupiterlab Desktopにインストール(Jupiterlab Desktopの場合、コマンドは「!pip install japanize-matplotlib」)してみました。
「Requirement already satisfied」って出てるしダメそう…
一応、ターミナルでもインストールしときました。依存関係がよくわからないので。
一度は解決したけども…
Perplexity.aiに「エラー解消のためにpip install japanize-matplotlibを試すのはいかがですか?」って聞いたら「問題を解決するのに良い方法です」って文言が返ってきました。
こんないい方法があるなら最初から提案してyo〜、って気持ちはさておき…
吐き出されたコードを実行したらうまくいきました。
グラフ自体はダメダメなので出力方法を変える必要がありますが、とりあえず目下の問題であるフォントバグは直ったのでヨシ!
…と思ったのも束の間、別のグラフを作成したらエラー再発。
【無事解決】最終的には生成AIが大活躍。フォントが反映された!
エラーコードの一部のみをコピペしたらナイスな解決策をくれました。
つまりこれ↓をコピペして実行せよ、ってこと。
import matplotlib
print(matplotlib.matplotlib_fname())
import matplotlib
print(matplotlib.get_cachedir())
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'IPAexGothic'
pip install matplotlib-fontja
import matplotlib.pyplot as plt
import matplotlib_fontja
(Jupiterlab Desktopでやる場合は「!pip install japanize-matplotlib」)
分解したやつ↓
2. Matplotlibの設定ファイルの編集:
import matplotlib
print(matplotlib.matplotlib_fname())
3.このファイル内で、"font.family:IPAexGothic"のように日本語フォントを指定します。
import matplotlib
print(matplotlib.get_cachedir())
4. コード内でのフォント指定:
python
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'IPAexGothic'
5. matplotlib-fontja'の使用:
Python 3.12以降では、以下のようにインストールして使用します。
pip install matplotlib-fontja
(Jupiterlab Desktopでやる場合は「!pip install japanize-matplotlib」)
import matplotlib.pyplot as plt
import matplotlib_fontja
文字化け解消!
めでたしめでたし。