seabornで日本語表示する方法（Mac・Ubuntu）

内容を更新したものを[こちら](https://qiita.com/Masahiro_T/items/33c3c88626b241912de5)に書きました。

# 追記（2021/10/29）

**追記1**
この記事の方がフォントのインストールなどがなく簡単みたいです！
[Python 「matplotlib」や「seaborn」のグラフ内で日本語表示する - PythonとVBAで世の中を便利にする](https://hk29.hatenablog.jp/entry/2020/01/18/195210)
ただ、毎回コードを書く必要があるみたいなので、本記事の内容もありかな、と思います。

**追記2**
フォントのダウンロード元のURLが変わったみたいです。
[こちらのページ](https://moji.or.jp/ipafont/ipa00303/)から新しいURLを探して使用してください。

**追記3**
「フォントをダウンロードして所定の ttf フォルダに置く」処理をする代わりに、 ``sudo apt install fonts-ipaexfont``をして、 matplotlib と seaborn の設定時に ``IPAGothic`` ではなく ``IPAexGothic`` を書く方法でも可能な事がわかりました。（[参考](https://self-development.info/ipaexgothic%E3%81%AB%E3%82%88%E3%82%8Bmatplotlib%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%E3%80%90python%E3%80%91/)） 
こちらの方が簡単そうです。

# 追記

同様の方法でMacでも日本語表示を実現できる事がわかりました。（macOS Catalina バージョン 10.15.3 で確認しました。）

Macの場合は、本記事の手順の内、以下の2点を変更すればOKです。

|変更箇所|変更前（Ubuntu）|変更後（Mac）|
|:--|:--|:--|
|使用するフォント|``ipag.ttf``|``ipaexg.ttf``を使用します。[こちらのサイト](https://ipafont.ipa.go.jp/node193#jp)から``ipaexg00401.zip(4.0MB)``をダウンロードし解凍すると取得できます。|
|設定ファイルに記入するフォントの名前|IPAGothic|IPAexGothic|

# はじめに

この記事の内容の大半はこのページを元にしています。ありがたや。

[matplotlib, seabornの日本語表示 - Qiita](https://qiita.com/u1and0/items/3b4d0f3e5514c9893d89)

# いきさつ

``Ubuntu``上で動く``Jupyter Lab``で``seaborn``を使おうとしたら、日本語が"□"になってしまった！

ググって出てきたサイトの記事を色々試してみたけれど解消しない。

が、最終的にはなんとか日本語が表示されたので良かったー。

肝は、フォントをIPAGothicにする所でした。（IPA明朝とかだと上手く表示されない！）

# 環境

- @2019/10/22
- matplotlib 3.0.3
- seaborn 0.9.0
- ubuntu 16.04

# 解決法

マニュアルっぽく書いていきます。

## 1. 日本語フォントファイルをダウンロード

この[IPAフォント ダウンロードページ](https://ipafont.ipa.go.jp/old/ipafont/download.html)のttfファイルの欄にある、**IPAゴシック(Ver.003.03)** [ipag00303.zip](https://ipafont.ipa.go.jp/old/ipafont/ipag00303.php)というボタンをクリックするとダウンロード出来ます。

他のフォント（IPA明朝(Ver.003.03)など）だと、うまく表示されませんでした。気をつけてください。

ダウンロードしたら解凍してください。

## 2. ttfファイルを所定の位置にコピー

コピー先を次の方法で求めます。

```python:python
import matplotlib as mpl
mpl.matplotlib_fname()
```

多分こんなのが出ると思います。

```
.../site-packages/matplotlib/mpl-data/matplotlibrc
```

そしたら、上の``mpl-data``までの所をコピーします。

```
.../site-packages/matplotlib/mpl-data/
```

そして、その後に``fonts/ttf/``を付け足します。

```
.../site-packages/matplotlib/mpl-data/fonts/ttf/
```

これでコピー先のパスが分かりました！

このフォルダに先ほど解凍して得たフォルダにある``ipag.ttf``というファイルをコピーしてください。

## 3. matplotlibの設定ファイルを更新

先ほども行なった以下のコードを実行してください。

```python:python
import matplotlib as mpl
mpl.matplotlib_fname()
```

先ほどと同じくこんなパスが出てくるはずです。

```
.../site-packages/matplotlib/mpl-data/matplotlibrc
```

このパスはmatplotlibの設定ファイルのパスです。

では、matplotlibの設定ファイルを変更しましょう！

```bash:bash
vi .../site-packages/matplotlib/mpl-data/matplotlibrc
```

いろいろ表示されると思いますが、どこかに以下を追記するだけでOKです。

```:matplotlibrc
font.family : IPAGothic
```

これでmatplotlibの設定は完了です。

## 4. seabornの設定ファイルを更新

またまた、例のコードを実行して例のパスを表示してください。

```python:python
import matplotlib as mpl
mpl.matplotlib_fname()
```

```
.../site-packages/matplotlib/mpl-data/matplotlibrc
```

seabornの設定ファイルのパスは、上記パスの``site-packages/``までの部分に``seaborn/rcmod.py``を付け足したものです。

```
.../site-packages/seaborn/rcmod.py
```

それではseabornの設定ファイルを更新しましょう！

```bash:bash
vi .../site-packages/seaborn/rcmod.py
```

まず、92行目にある以下の部分の``font``を``IPAGothic``に変えてください。

（vi の場合、 ``:set number``で行番号が表示されるようになります。）

```rcmod.py
def set(context="notebook", style="darkgrid", palette="deep",
        font="IPAGothic", font_scale=1, color_codes=True, rc=None):
　　　　　　　 # ↑ここを変更
```

次に、203行目の``font.family``も``IPAGothic``に変えてください。

```rcmod.py
"font.family": ["IPAGothic"]
　　　　　　      # ↑ここを変更
```

さらに、204行目の``font.sans-serif``に``IPAGothic``を加えてください。

```rcmod.py
"font.sans-serif": ["Arial", "DejaVu Sans", "Liberation Sans",
                    "Bitstream Vera Sans", "sans-serif", "IPAGothic"],
                                                          # ↑これを追加
```

以上で設定の更新は完了です！

## 5. キャッシュの削除

matploglibに関するキャッシュを削除しておく必要があるみたいです。
以下のコマンドで削除しましょう。

```bash:bash
rm -rf ~/.matplotlib/* 

# もしくはこっちにキャッシュがあるかもしれません
rm -rf ~/.cache/.matplotlib/*

# あるいはこちら
rm -rf ~/.cache/matplotlib/*
```

# これで日本語が表示されるはずです

確認してみてください！

（Jupyterで確認する時はkernelをrestartしてくださいね！）