SageMaker上のmatplotlibを日本語表記にする

2019.07.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

先日、SageMaker上でmatplotlibを利用していたのですが、日本語を表記させようとしたら文字化けしてしまい困ってしまいました。
(日本語が◻︎になってしまうので、お豆腐問題、と言われているらしいですね)

対応方法については既に色々と紹介記事があり、ほぼほぼ既存の記事と内容に差異は無いのですが、今回私もSageMaker上で日本語表示させることができたのでご紹介しようと思います。

概要

下記の2点をSageMaker上で実行する必要があります。

●日本語フォントをINSTALL

日本語フォントも色々あるようなのですが、今回は「IPAGothic」をインストールして利用しようと思います。
また、SageMakerノートブックインスタンスでパッケージをインストールする際の注意点なのですが、SageMakerノートブックインスタンスは「停止するごとにINSTALLしたパッケージがリセット」されます。

再起動するたびに手動で実行するのは手間なので、起動の度にINSTALLしたいパッケージについては「ライフサイクル設定」に設定しましょう。
今回の場合は、下記のようなコマンドを「ライフサイクル設定」で設定しました。
(インスタンスの起動に要する時間が5分以上になるとSageMakerノートブックインスタンスの起動は失敗するので、ライフサイクル設定はあまり複雑なことはやらせすぎないようにしましょう。これに対応するための方法についてはこちらをご参照ください)

sudo yum install -y ipa-gothic-fonts

●対象のノートブックファイル上で上記のフォントを利用するように指定

具体的には、下記のようなコマンドを実行しました。

# パッケージのinstall
import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.font_manager._rebuild() #キャッシュの削除
plt.rcParams['font.family'] = 'IPAGothic' # インストールしたフォントを指定

処理内容についてはコメントに記述してある通りですが、matplotlibがデフォルトで指定しているフォントのキャッシュを削除し、インストールしたフォントを指定し直しています。

確認

下記のように、無事日本語が表示されることが確認できました。

今回は必要最低限程度の紹介でしたが、他にも「デフォルトではなく明示的に指定したい設定」等がある場合はこちらをご参照ください。
今回は「font.family」のみを修正した形ですが、他にも「font.size」あたりは今後もお世話になるかもしれません。

まとめ

小ネタですが、こういったところで時間を取られたくないですよね。
ご覧いただいた方の参考になれば幸いです。

参照

matplotlib
buzztaikiさんのGit
matplotlibの日本語文字化けを解決する
3分でmatplotlibを日本語対応させる