5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Lamda上のmatplotlibで日本語対応する

Posted at

  Lambda上でmatplotlibを使ってグラフを作成したいとき、Lambdaには日本語フォントが含まれていないため日本語が豆腐になってしまいます。この記事では、日本語対応するための方法について説明します。

前提

matplotlibは別途利用できるようにレイヤーなどで用意する必要があります。

やり方

  1. Lambdaレイヤーに日本語フォント用のレイヤーを登録
  2. Lambda関数に日本語フォント用のレイヤーを追加
  3. matplotlibでフォント読み込み

1.Lambdaレイヤーに日本語フォント用のレイヤーを作成

 日本語フォントなら基本的に何でもOKと思いますが、今回はIPAexゴシック(ipaexg.ttf)をダウンロードして使いました。
 ダウンロードしたttfファイルを適宜ディレクトリ(例えばfontsなど)に入れてzip圧縮します。
 Lambdaのレイヤーページから「レイヤーの作成」にて作成画面に移動し、アップロードにて先程圧縮したzipファイルを選択してレイヤーを作成します。

image.png

2. Lambda関数に日本語フォント用のレイヤーを追加

 グラフを作成するメインLambda関数に、先程作成した日本語フォント用のレイヤーを追加します。
image.png

3. matplotlibでフォント読み込み

 font_managerのFontPropertiesにてレイヤーで登録したttfファイルを指定すれば日本語が使えるようになります。レイヤーは/optにバインドされますので適宜指定してください。

import matplotlib.font_manager as fm

# 日本語フォント設定
prop = fm.FontProperties(fname='/opt/fonts/ipaexg.ttf')

・・・・・・

ax.set_xticklabels(labels, rotation=45, fontproperties=prop)

その他

  • ttfファイル自体をLamba関数に含めることでも実現可能ですが、容量が大きいためWebIDE上でコードの編集ができなくなる可能性があります。
  • 他の方法として、japanize-matplotlibのレイヤーを作ってもよいかもしれませんが、試してません。
5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?