LoginSignup
5
7

More than 1 year has passed since last update.

matplotlib / Google Colabで、日本語を表示したい。好きなフォントを使いたい。

Last updated at Posted at 2021-07-21

豆腐対策、既に、いろいろな方法が提案されてます

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をマウントします。このやり方が、よく(?)変わる。

承認のためのサインイン、コードのコピペが必要だった時、

  1. 左下フォルダアイコンをクリック
  2. Googleドライブアイコンをクリック
  3. ドライブをマウントする以下のコード入りのセルが自動的に作られる。
from google.colab import drive
drive.mount('/content/drive')

実行すると、承認のプロセスを挟んで、マウントされる。位置は、元からあるデータ処理/機械学習用のサンプルデータ、/content/sample_dataの並びで、/content/drive、その下に/content/drive/MyDriveとなる。

もっと簡単にできてしまう場合は以下の流れ。

「Googleドライブアイコン付きフォルダ」アイコンをクリックしてドライブをマウントします。

スクリーンショット 2021-07-22 3.55.41.png

このノートブックにGoogleドライブのファイルへのアクセスを許可しますか?
この後、ドライブをマウントしています。→ マウント完了。

スクリーンショット 2021-07-22 3.56.06.png

drive/MyDriveにマウントされて、
スクリーンショット 2021-07-22 3.57.08.png

用意しておいたFontsフォルダが見える。

スクリーンショット 2021-07-22 3.57.41.png

Fontsフォルダを開いたところ。各フォントのpathは、ファイル名右のコンテキストメニュー(3ドット)から、'パスをコピー'でゲット。
スクリーンショット 2021-07-22 3.58.59.png

以下のコードで、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)

スクリーンショット 2021-07-22 8.38.45.png

5
7
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
7