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

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

Google Colabを引っ張り出してきて、matplotlibなど、やって見るわけですが、しばらく見なかった豆腐が。Jupyter Notebookでさんざん、お世話になった豆腐が出るわけです。

解決法をググると、色々あります。ですが、一長一短、いまいちピンとくるものが無かったので、好きな日本語フォントを使う方法をまとめます。

## まず、好きな、じゃなくて、とりあえず日本語が表示できれば良い場合
とはいえ、とりあえず、まぁ、ささっとやりたい時は、これ。普通に全ての箇所で使えるようになるので、既存のコードを日本語化するときなど？

pypiにあるモジュール、japanize-matplotlibで問題なし。フォントは、IPAexGothic決め打ちになる。
[@Github.com](https://github.com/uehara1414/japanize-matplotlib)
[@Pypi](https://pypi.org/project/japanize-matplotlib/)
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. 左下フォルダアイコンをクリック
1. Googleドライブアイコンをクリック
1. ドライブをマウントする以下のコード入りのセルが自動的に作られる。

```python
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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5412/c9e60623-b941-b8d2-646c-cdf8d740e447.png)

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

![スクリーンショット 2021-07-22 3.56.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5412/809df186-60e0-2620-382e-fe0cb3f243d5.png)

drive/MyDriveにマウントされて、
![スクリーンショット 2021-07-22 3.57.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5412/98de9e26-0900-4292-17bf-29c20fda9495.png)

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

![スクリーンショット 2021-07-22 3.57.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5412/193a88b2-6319-5db4-7bfa-7501346e753a.png)

Fontsフォルダを開いたところ。各フォントのpathは、ファイル名右のコンテキストメニュー（3ドット）から、'パスをコピー'でゲット。
![スクリーンショット 2021-07-22 3.58.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5412/4baa5370-205c-098b-0d83-20800cb1c0ac.png)


以下のコードで、pathをセット。

```python
import matplotlib.font_manager as fm

FONT_PATH = '/content/drive/MyDrive/fonts/......'
fm.FontProperties(fname=FONT_PATH) 
```

'fontproperties=fp'形式でフォントを指定できるメソッドで使える。

```python
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())
```

実際のグラフでは、、こんな感じで使える。


```python
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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5412/bfd82ee5-75a9-efda-5f6a-c6285a58ca68.png)