2021/8/5追記
以下の記事にあるように、ノートブックのセルで%pip install japanize-matplotlib
とするか、クラスターライブラリとしてjapanize-matplotlib
をインストールし、import japanize_matplotlib
するだけで解消できます。
サンプルノートブックはこちらからダウンロードできます。
Databricksでmatplotlibを使用する際も、日本語が文字化け(□になる)する現象に遭遇します。なお、Databricksビルトインの可視化機能では文字化けは発生しません。
これを解決するには以下の対策が必要です。
matplotlibの日本語文字化けを解決する - Qiita
しかしながら、日本語フォントをインストールしても、クラスターを停止するとフォントファイルが削除されてしまうため、追加の対策が必要です。Databricksでは、init scriptに日本語インストール処理を追加します。
init scriptによる日本語フォントのインストール
- 以下のスクリプトを実行すると、DBFSの
/databricks/scripts/japanese-font-install.sh
にinit scriptが作成されます。 - Clustersにて、日本語フォントを使用するクラスターにinit scriptを指定してください。
参考情報
- Cluster node initialization scripts — Databricks Documentation
- Configure clusters — Databricks Documentation init scriptの動作をロギングすることができます
# init script格納ディレクトリの作成
dbutils.fs.mkdirs("dbfs:/databricks/scripts/")
# init scriptの作成
dbutils.fs.put("/databricks/scripts/japanese-font-install.sh","""
#!/bin/bash
apt-get install fonts-takao-mincho fonts-takao-gothic fonts-takao-pgothic -y""", True)
display(dbutils.fs.ls("dbfs:/databricks/scripts/japanese-font-install.sh"))
動作確認
import matplotlib
import matplotlib.font_manager as fm
originalFilelist = fm.findSystemFonts()
import numpy as np
import matplotlib.pyplot as plt
# インストール済みフォントの表示
originalFilelist
# 日本語フォントの存在を確認
fm.findfont('TakaoGothic')
日本語フォントのテスト
%matplotlib inline
plt.ion()
fig2 = plt.figure()
axl = fig2.add_subplot(1,1,1)
data1 = np.arange(1001)
matplotlib.rc('font', family='TakaoGothic')
line1, = axl.plot(data1[:], label="あああtest Value")
axl.legend(loc="best")
csfont = {'fontname':'TakaoPMincho'}
hfont = {'fontname':'TakaoPMincho'}
display(fig2)