Python

【Python】【Seaborn】日本語文字化けを直す

MAX

seabornやmatplotlibでグラフ描画する時に日本語が混じっていると文字化けが発生する。

少し前までは、matplitlibでグラフ作成をする場合はfontを設定する必要があったが、今ではjapanize_matplotlibをimportするだけで日本語が正常に表示されるようになる。

seabornでグラフを作成する場合も、fontに日本語対応フォントを設定するかjapanize_matplotlibをimportすれば、日本語が正常に表示される。

  • japanize_matplotlibをimportする
  • 日本語対応フォントを設定する
スポンサーリンク

データ作成

グラフ作成対象のデータ作成。日本語多め。

1import pandas as pd
2
3data1 = [25, 25, 30]
4data2 = [15, 25, 28]
5index = ["Aさん", "Bさん", "Cさん"]
6df = pd.DataFrame(data={"収入": data1, "支出": data2}, index=index)
7
8# 名前毎に収入と支出をまとめて棒グラフを作成する
9data = df.stack().rename_axis(["名前", "分類"]).reset_index().rename(columns={0: "金額(万円)"})
10print(data)
11#     名前  分類  金額(万円)
12# 0  Aさん  収入      25
13# 1  Aさん  支出      15
14# 2  Bさん  収入      25
15# 3  Bさん  支出      25
16# 4  Cさん  収入      30
17# 5  Cさん  支出      28

文字化けするグラフ

グラフ作成のためにmatplotlibとseabornを単純にインポートしただけだと文字化けする。

1import matplotlib.pyplot as plt
2import seaborn as sns
3
4plt.figure(figsize=(16, 9), facecolor="w")
5sns.barplot(data=data, x="名前", y="金額(万円)", hue="分類")
6title = "収入と支出"
7plt.title(title)
8plt.legend(loc="upper left", bbox_to_anchor=(1,1))

タイトル、x軸、y軸、レジェンドなど、全て文字化けしている。

japanize_matplotlibをimportする方法

japanize_matplotlibをインストールしていない場合はpipからインストールする。

1> pip install japanize-matplotlib

japanize_matplotlibをインポートするだけで文字化けが解消する。

1import japanize_matplotlib
2
3plt.figure(figsize=(16, 9), facecolor="w")
4sns.barplot(data=data, x="名前", y="金額(万円)", hue="分類")
5title = "収入と支出"
6plt.title(title)
7plt.legend(loc="upper left", bbox_to_anchor=(1,1))

日本語が正常に表示される。

日本語対応フォントを設定する方法

japanize_atplotlibをimportしても良いが、日本語対応のフォントを設定することでも文字化けは解消する。

1# フォントをmeiryoに設定
2sns.set(font="meiryo")
3
4plt.figure(figsize=(16, 9), facecolor="w")
5sns.barplot(data=data, x="名前", y="金額(万円)", hue="分類")
6title = "収入と支出"
7plt.title(title)
8plt.legend(loc="upper left", bbox_to_anchor=(1,1))

meiryoは特にフォントをインストールする必要もなく、パワーポイントでの資料作成時などにもよく使うフォントなのでおススメ。

スポンサーリンク
ABOUT ME
MAX
MAX
ITエンジニア、データサイエンティスト
新卒でSIerに入社し、フリーランスになってWEB系へ転向。
その後AIの世界へ足を踏み入れ、正社員に戻る。 テーブルデータの分析がメイン。
スポンサーリンク
記事URLをコピーしました