豆腐対策、既に、いろいろな方法が提案されてます
Google Colabを引っ張り出してきて、matplotlibなど、やって見るわけですが、しばらく見なかった豆腐が。Jupyter Notebookでさんざん、お世話になった豆腐が出るわけです。
解決法をググると、色々あります。ですが、一長一短、いまいちピンとくるものが無かったので、好きな日本語フォントを使う方法をまとめます。
まず、好きな、じゃなくて、とりあえず日本語が表示できれば良い場合
とはいえ、とりあえず、まぁ、ささっとやりたい時は、これ。普通に全ての箇所で使えるようになるので、既存のコードを日本語化するときなど?
pypiにあるモジュール、japanize-matplotlibで問題なし。フォントは、IPAexGothic決め打ちになる。
@Github.com
@Pypi
READMEにもありますが、他の設定が上書きしてしまう場合があるので、japanize_matplotlib.japanize() を忘れずに。これが面倒だ。。
インストール
!pip install japanize-matplotlib
コード中で、
import japanize_matplotlib
上書きされたあとで、
japanize_matplotlib.japanize()
実際の例
# とりあえず、日本語が使えればいい! のとき。
!pip install japanize-matplotlib
import matplotlib.pyplot as plt
import japanize_matplotlib
plt.title('Raspberry Pi 出荷台数推移')
plt.ylabel('万台')
いやいや、好きなフォントが使いたいのです!
Googleコラボ環境にフォントをインストールする方式と、しない方式があります。環境は毎回リフレッシュされてしまうため、毎回インストールが必要、インストールするとフォントキャッシュをリロードする必要あり、で、面倒。
というわけで、インストールしない方式しかない。
好きなフォントを(なるべく)簡単に使う方法
フォントは、MyDrive/Fontsにアップロードしておきましょう。
そして、MyDriveをマウントします。このやり方が、よく(?)変わる。
承認のためのサインイン、コードのコピペが必要だった時、
- 左下フォルダアイコンをクリック
- Googleドライブアイコンをクリック
- ドライブをマウントする以下のコード入りのセルが自動的に作られる。
from google.colab import drive
drive.mount('/content/drive')
実行すると、承認のプロセスを挟んで、マウントされる。位置は、元からあるデータ処理/機械学習用のサンプルデータ、/content/sample_dataの並びで、/content/drive、その下に/content/drive/MyDriveとなる。
もっと簡単にできてしまう場合は以下の流れ。
「Googleドライブアイコン付きフォルダ」アイコンをクリックしてドライブをマウントします。
このノートブックにGoogleドライブのファイルへのアクセスを許可しますか?
この後、ドライブをマウントしています。→ マウント完了。
用意しておいたFontsフォルダが見える。
Fontsフォルダを開いたところ。各フォントのpathは、ファイル名右のコンテキストメニュー(3ドット)から、'パスをコピー'でゲット。
以下のコードで、pathをセット。
import matplotlib.font_manager as fm
FONT_PATH = '/content/drive/MyDrive/fonts/......'
fm.FontProperties(fname=FONT_PATH)
'fontproperties=fp'形式でフォントを指定できるメソッドで使える。
import matplotlib.font_manager as fm
FONT_PATH = '/content/drive/MyDrive/Fonts/ttf/meiryo/meiryo.ttc'
fp = fm.FontProperties(fname=FONT_PATH)
print(fp.get_name())
print(fp.get_family())
実際のグラフでは、、こんな感じで使える。
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
FONT_PATH = '/content/drive/MyDrive/Fonts/ttf/851_font/851tegaki_zatsu_normal_0883.ttf'
fp = fm.FontProperties(fname=FONT_PATH)
plt.rcParams["font.family"] = fp.get_family()
plt.rcParams["font.size"] = 18
plt.title('Raspberry Pi 出荷台数推移', fontproperties=fp)
plt.ylabel('万台', fontproperties=fp)