pythonの可視化ライブラリmatplotlibを使用する際、日本語を含むグラフを作成しようとすると文字化けが発生することがあります。この記事では、その原因と、いくつかの解決策を解説します。
なぜ文字化けが起きるのか
matplotlibはデフォルトで日本語をサポートしていないフォントを使用しています。そのため、日本語を含むグラフを作成すると文字が正しく表示されず、代わりに以下の画像のように文字化けが発生します。
解決策の詳細
matplotlibで日本語を表示できるようにするには、次の3つの方法があります。
- 設定ファイルを編集する
- コード内で日本語対応フォントを指定する
- japanize-matplotlibを使う[→ラクです]
1. 設定ファイル(matplotlibrc)を編集する方法
matplotlibの設定ファイルmatplotlibrc
を編集することで、デフォルトのフォントを変更できます。このファイルは通常、matplotlibのインストールディレクトリ内か、ユーザーのホームディレクトリの.config/matplotlib
フォルダ内にあります。
font.family
と font.sans-serif
オプションを編集して、好みのフォントに設定します。例えば次のように設定してみてください。
font.family : sans-serif
font.sans-serif : Arial, Liberation Sans, DejaVu Sans, Bitstream Vera Sans, sans-serif
2. コード内で日本語フォントを指定する方法
コード内でrcParamsを設定するれば、日本語で表示できるようになります。plt.rcParams['font.family']
を日本語対応のフォントにすれば、文字化けしなくなります。
import matplotlib.pyplot as plt
# フォントの設定
plt.rcParams['font.family'] = 'Hiragino Sans'
# グラフを描画してみる
plt.plot([1, 2, 3, 4, 5])
plt.title('お試しプロット')
plt.xlabel('エックス軸')
plt.ylabel('ワイ軸')
plt.show()
3. japanize-matplotlibを使う方法
個人的にはこの方法が最も簡単だと思います。japanize-matplotlibをインストールして、読み込むだけです。
pip install japanize-matplotlib
上のコマンドでjapanize-matplotlibをインストールしてください。次に、matplotlibをインポートするときに、同時にこれもインポートするだけで日本語表示に対応できるようになります。
import matplotlib.pyplot as plt
import japanize_matplotlib
# グラフを描画してみる
plt.plot([1, 2, 3, 4, 5])
plt.title('お試しプロット')
plt.xlabel('エックス軸')
plt.ylabel('ワイ軸')
plt.show()