プログラミング
記事内に商品プロモーションを含む場合があります

matplotlib/seabornで日本語表示させる簡単な方法(文字化けを治す方法)

tadanori

Pythonでグラフを描画する場合に日本語でラベル名などをつける簡単な方法を紹介します。調べて見た結果、この方法が一番簡単です。環境依存もなさそうで、Google Colabでも日本語表示できました。

日本語を表示したい

Pythonでグラフを描画する場合、matplotlibまたはseabornを使うことが多いかと思います。これらのライブラリでは、デフォルトでは日本語を表示することができません。

日本語を表示したい場合は、設定をする必要がありますが、japanize_matplotlibを利用することで簡単にグラフ中で日本語を使うことができるようになります

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

japanize_matplotlibをインポートした後に、フォント設定が変化する関数を呼び出すと日本語が表示されなくなります。例えば、seabornのsns.set()などを呼び出すと日本語が表示されなくなります

その場合は、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)

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)

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

seaborn objects

seaborn objectの場合は、japanize_matplotlibをインポートしても自動で日本語になりません。seaborn objectの場合は、japanize_matplotlibをインポートした後で、フォントにIPAexGothicを設定することで日本語表示することが可能です。

日本語が文字化けする例
日本語が文字化けする例

以下は、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

まとめ

matplotlib, seaborn, seaborn objectsでグラフに日本語を表示する方法について解説しました。japanize_matplitlibのコードを読むと、フォント設定をしているだけですが、インポートだけで設定してくれるのはかなり楽です。

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

記事URLをコピーしました