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

matplotlib/seabornで日本語表示する楽な方法(文字化け解消)

Aru

Pythonでグラフ描画をする際、困るのが日本語ラベルの文字化けです。日本語の文字化けを治す方法を調査した結果、japanize_matplotlibを使うのが一番簡単そうでした。本記事では、このライブラリを使ってmatplotlib/seaborn/seaborn objectで日本語表示させる具体的な方法について解説します。この方法環境依存も少なく、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のコードを読むと、フォント設定をしているだけですが、インポートだけで設定してくれるのはかなり楽です。

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

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中
記事URLをコピーしました