matplotlib/seabornで日本語表示させる簡単な方法(文字化けを治す方法)
![](https://tech.aru-zakki.com/wp-content/uploads/2024/02/matplotlib-japanese.001.jpeg)
Pythonでグラフを描画する場合に日本語でラベル名などをつける簡単な方法を紹介します。調べて見た結果、この方法が一番簡単です。環境依存もなさそうで、Google Colabでも日本語表示できました。
日本語を表示したい
Pythonでグラフを描画する場合、matplotlibまたはseabornを使うことが多いかと思います。これらのライブラリでは、デフォルトでは日本語を表示することができません。
日本語を表示したい場合は、設定をする必要がありますが、japanize_matplotlibを利用することで簡単にグラフ中で日本語を使うことができるようになります
![](https://tech.aru-zakki.com/wp-content/uploads/2023/06/tabbycat.png)
Google Colab環境でも問題なく使えました。環境依存はなさそうです
この記事では、matplotlib, seaborn, seaborn.objectsで日本語を利用する方法を解説します。
japanize_matplotlibのインストール
インストール
japanize_matplitlibのインストールはpipで行うことができます
pip install japanize-matplotlib
インポート
matplotlibやseabornをimportした後に、japanize_matplotlibをimportします。
import matplotlib.pyplot as plt
import japanize_matplotlib
![](https://tech.aru-zakki.com/wp-content/uploads/2023/06/tabbycat.png)
japanize_matplotlibをインポートした後に、フォント設定が変化する関数を呼び出すと日本語が表示されなくなります。例えば、seabornのsns.set()
などを呼び出すと日本語が表示されなくなります
![](https://tech.aru-zakki.com/wp-content/uploads/2023/07/cat2-e1688625674820.png)
その場合は、japanize_matplotlib.japanize()
を実行するなどで日本語に戻すことができます
使い方(matplotlib/seaborn)
matplotlib①
pyplotで使う方法です。このjapanize_matplotlib
がインストールされていれば、title
, xlabel
, ylabel
などに日本語を設定するだけで日本語が表示できます。
import matplotlib.pyplot as plt
import japanize_matplotlib
import random
x = [i for i in range(100)]
y = [i + random.randint(-10, 10) for i in range(100)]
plt.plot(x, y, label="sample")
plt.title("グラフ")
plt.xlabel("x軸")
plt.ylabel("y軸")
plt.legend()
plt.show()
![matplitlib(1)](https://tech.aru-zakki.com/wp-content/uploads/2024/02/image-3-1024x501.png)
matplotlib②
subplot
で日本語を使う例です。こちらの場合は、set_title
, set_xlabel
, set_ylabel
に日本語を設定することで日本語を表示できます。
import matplotlib.pyplot as plt
import japanize_matplotlib
import random
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
for i in range(2):
x = [i for i in range(100)]
y = [i + random.randint(-10, 10) for i in range(100)]
ax.plot(x, y, label=f"sample{i}")
ax.set_title("グラフ")
ax.set_ylabel("y軸")
ax.set_xlabel("x軸")
ax.legend()
plt.show()
![matplitlib(2)](https://tech.aru-zakki.com/wp-content/uploads/2024/02/image-5-1024x496.jpg)
seaborn
seabornも、日本語を普通に使えるようになります。
import seaborn as sns
import random
import numpy as np
import pandas as pd
import japanize_matplotlib
x = np.arange(0, 100)
y = np.random.randint(0, 100, 100)
df = pd.DataFrame({'軸1': x, '軸2': y})
sns.scatterplot(x='軸1', y='軸2', data=df)
![seaborn](https://tech.aru-zakki.com/wp-content/uploads/2024/02/image-5-1024x523.png)
seaborn objects
seaborn objectの場合は、japanize_matplotlibをインポートしても自動で日本語になりません。seaborn objectの場合は、japanize_matplotlibをインポートした後で、フォントにIPAexGothic
を設定することで日本語表示することが可能です。
![日本語が文字化けする例](https://tech.aru-zakki.com/wp-content/uploads/2024/02/image-6-1024x499.png)
以下は、seaborn.objectsで日本語を表示するサンプルです。
日本語の指定は、.theme({'font.family': 'IPAexGothic'})
の部分です。
import seaborn as sns
import numpy as np
import pandas as pd
import seaborn.objects as so
import japanize_matplotlib
x = np.arange(0, 100)
x = np.concatenate([x,x])
y = np.random.randint(0, 100, 200)
z = ['A' for _ in range(100)] + ['B' for _ in range(100)]
df = pd.DataFrame({'サンプル1': x, 'サンプル2': y, '結果' : z})
so.Plot(df, x='サンプル1', y = 'サンプル2').add(so.Dot()).theme({'font.family': 'IPAexGothic'})
![seaborn.objects](https://tech.aru-zakki.com/wp-content/uploads/2024/02/image-7-1024x511.png)
まとめ
matplotlib, seaborn, seaborn objectsでグラフに日本語を表示する方法について解説しました。japanize_matplitlibのコードを読むと、フォント設定をしているだけですが、インポートだけで設定してくれるのはかなり楽です。