概要
コピペするだけで matplotlib を日本語化する方法について紹介します。 matplotlib の日本語化のやり方に関する情報は Web 上に沢山ありますが、環境を作り直すたびに手動で設定するのが面倒なので、コピペするだけで日本語化ができるコードを紹介します。
Windows 10 と Ubuntu 16.04/18.04 で動作することを確認しています。
デフォルトでは日本語は描画できない
matplotlib のデフォルトのフォントは英字フォントのため、日本語を描画しようとすると、RuntimeWarning: Glyph <番号> missing from current font.
という警告が表示され、以下のように □ で表示されてしまいます。
![](/wp/wp-content/uploads/2020/03/japanize-matplotlib-just-by-copying-and-pasting_01.jpg)
日本語フォントを設定する手順
日本語を表示するには、次の手順で、使用するフォントに日本語フォントを設定する必要があります。
- テンプレートの設定ファイル
<モジュールのパス>/mpl-data/matplotlibrc
を<ホームディレクトリ>/.config/matplotlib/matplotlibrc
にコピーする。 - 設定ファイル
matplotlibrc
をテキストエディタで開き、font.family : <使用するフォント名>
を記載する。 - matplotlib のフォントのキャッシュを削除する。
今回は上記作業を Python で自動化してみました。
Windows の場合
以下のコードをコピペして、実行してください。
Windows 10 に搭載されている UDデジタル教科書体 N-R
に設定するようになっていますが、他のフォントを設定したい場合は、fontname = "UD Digi Kyokasho N-R"
の行を変更してください。
Ubuntu の場合
IPAフォント をインストールします。
デフォルトの設定ファイルを ~/.config/matplotlib/matplotlibrc
にコピーします。
設定ファイルのフォントを変更します。
使用可能なフォント名の確認方法
以下のコードで使用可能なフォント名を確認できます。
matplotlibrc
に記載する場合、フォント名が空白を含む場合も、引用符で囲う必要はありません。
Avaiable fonts: * Liberation Sans Narrow * Liberation Sans * IPAMincho * Liberation Sans Narrow * IPAGothic * IPAGothic * Liberation Mono * DejaVu Serif * Liberation Sans Narrow * Liberation Serif * DejaVu Sans * Liberation Sans * Liberation Sans * DejaVu Serif * DejaVu Sans Mono * Liberation Sans * Liberation Serif * DejaVu Sans Mono * Liberation Mono * Liberation Sans Narrow * Liberation Serif * IPAMincho * Liberation Mono * Liberation Mono * Liberation Serif * IPAPMincho * DejaVu Sans * IPAPGothic
日本語化ができたかどうかを確認する。
以下のコードを実行し、日本語が描画できる事を確認します。
Jupyter Notebook / Jupyter Lab の場合、設定ファイルが読み込まれるのは import matplotlib.pyplot
を実行したタイミングなので、一度カーネルを再起動してください。
![](/wp/wp-content/uploads/2020/03/japanize-matplotlib-just-by-copying-and-pasting_02.jpg)
日本語を正しく表示できることが確認できました。
コメント