0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL上でMatplotlibを使うと時に出るフォントエラーを解消する

Last updated at Posted at 2025-02-16

 テスト勉強中に限って部屋の掃除をしたくなるように、研究が上手くいっていない時は何かを作りたくなる。なのでQittaで記事を書くことにする。今回はWSLでMatplotlibを使用してグラフを描こうとしたときに指定したフォントが見つからないエラーを解消する方法を記した。結論を先に書くとMatplotlibのキャッシュを削除すると直った。

生じたエラーについて

 Windows11でWSLを使用してWSL上でPythonを動かしている。筆者はMatplotlib.pyplotを使用してグラフを描くのだが、Macから移行を進めているのでMac上で走っていたスクリプトはたまにエラーを吐く。今回、説明するのはフォントエラーの解消である。以下が問題の1行である。

plt.rcParams["font.family"] = "Arial"

と指定するとフォントが見つからないよと返ってくる。

findfont: Font family 'Arial' not found.

なのでこれを解消していく。

1. WSLにあるフォントのチェック

 fc-listで入っているフォントをチェックする。Windowsに入っているフォントを使用したい場合はこちらの記事を参考に設定する(コマンドが使用できない場合はsudo apt install fontconfigで入れる)。Arial入っているのでWSL上では少なくとも使用できる。WSLインストール時にはArialは入っていない。

2. Matplotlibに認識されているフォントのチェック

 以下のスクリプトでMatplotlibが認識しているフォントの一覧を表示させることができる。Arialはしっかり認識されていたけどエラーが出ている状況は変わらななかった。

from matplotlib import font_manager
fonts = font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
print(fonts)

3. キャッシュの削除

ターミナルを叩いてMatplotlibが参照しているキャッシュを削除する。このキャッシュファイルを削除するとmatplotlibを起動したときに勝手にフォントのリストを再び検索して作る仕様と考えられる。初期にWSL上にArialがそもそも入ってないのでフォントを更新した後には毎回、Matplotlib上のキャッシュを消さないといけない。

rm ~/.cache/matplotlib -fr

これだけで直った。2か月くらいこの問題を放置していた。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?