Python3 matplotlibの日本語文字化けの対処方法について

統計

論文作成にあたり、データ解析は必要十分条件です。私が勤務する大学ではIBMのSPSSが大学内ネットワークで使用できます。

しかしながら、出先のカフェや自宅でデータ解析を行いたい場合が多々あります。

そこで、SAS University EditionやPythonを用いたデータ解析の最適解を探している最中です。

今回の記事は、Jupyterlabを使用した場合に発生するmatplotlibの日本語文字化け、いわゆる豆腐化の対処方法の解説をコードを用いて行います。

目次

Pythonとは

Pythonとはプログラミング言語の1つです。C言語などと比較して分かりやすい文法が特徴です。

非常に広く使われているため学習するためのサイトや本も充実しています。2020年現在、最新のGitHubの調査(2019年)では世界2位の人気を記録しています。

Matplotlibとは

Matplotlibは、プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリです。様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきています。

MATLABの対話環境のようなものを提供するpylabというインタフェースも持っています。

Matplotlibの日本語文字化けについて

Matplotlibを用いて英語でグラフを作成する場合は、タイトルの「TEST」のように文字化けは発生しません。

しかしながら、日本語でグラフを作成した場合、□□□□となり文字表示ができません。

Matplotlibの日本語文字化けの対処方法

フォントのダウンロード

初めに行なうことは、必要に応じて使うフォントを、OSにインストールしておいてください。この記事では以下を使います。

Source Han Code JP | 源ノ角ゴシック Code

Fonts version 2.011R(OTF, OTC)

フォントのインストール

ダウンロードしたsource-han-code-jp-2.011Rを解答する

OTFフォルダのSourceHanCodeJP-Regular.otfをクリックしMacにフォントをインストールする。

同一フォルダ内にSourceHanCodeJP-RegularIt.otfと似たようなファイルがあるので気をつけましょう

matplotlibrcの場所の確認

Matplotlibの設定文字を変更する場合はmatplotlibrcのファイルを書き換えてことによって文字化けを解消することができます。

from matplotlib import matplotlib_fname
matplotlib_fname()

上記のコードを実行すると下記の結果が出力されます。

‘/Users/User名(あなたのユーザー名)/opt/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc

matplotlibrcの場所の確認ができました。

matplotlibrc内のコードの変更

matplotlibrcを変更する前にオリジナルmatplotlibrcを残すために、ファイルをコピーする

同一フォルダー内で**matplotlibrc20200821などの名前に変更しオリジナルファイルを保存することをお勧めします。

210行目あたりにあるコードを変更する

#font.sans-serif : DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

の#を削除し、font.sans-serif :の先頭にSource Han Code JP,を追加する

#font.sans-serif : Source Han Code JP,DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

フォントはキャッシュされているらしいので、次のコードを実行して、いったん再構築しておきます。

#フォントの再構築
matplotlib.font_manager._rebuild()

日本語文字化けの確認

下記のコードを用いてtitleに日本語入力します。

今回は日本語文字化け確認をしました。

import numpy as np
from matplotlib import pyplot as plt

np.random.seed(0)

x = range(5)
y = 10 + 6 * np.random.random(5)

fig = plt.figure()
ax = fig.add_subplot(111)

ax.set_title('日本語文字化け確認')
ax.bar(x,y)


plt.show()

コードを走らせてタイトル部分が□□□□になっていなければ、日本語の完了です。

ご参考までに

コメント

タイトルとURLをコピーしました