【Matplotlib文字化け解決】Windows/Ubuntu対応!日本語をちゃんと表示する設定方法 📝
「Matplotlibでグラフを作って、いざタイトルやラベルに日本語を入れたら、四角い豆腐(□□□)だらけに…!」
「findfont: Font family not found
っていうエラーが出て、どうすればいいか分からない…」
「毎回コードに長いフォントパスを書くのは面倒!根本的に解決したい!」
こんにちは! Pythonデータ可視化探検隊、隊長のPythonistaです! Matplotlibでデータを可視化できるようになった!と喜びも束の間、多くの日本人学習者がぶつかる大きな壁、それが日本語の文字化け問題です。せっかく作った綺麗なグラフも、ラベルが文字化けしていたら台無しですよね。
ご安心ください!この問題は、一度設定してしまえば恒久的に解決できます。この記事では、なぜ文字化けが起きるのかという根本的な原因から、Windows 11とLinux (Ubuntu) それぞれの環境で、Matplotlibの日本語表示を綺麗にするための設定方法を、ステップバイステップで徹底的に解説していきます。もう文字化けで悩むのは終わりにしましょう!
1. なぜ文字化けは起きるのか?そのメカニズム
Matplotlibが日本語を表示しようとすると文字化けが起きる主な理由は、Matplotlibがデフォルトで使用するフォントに、日本語の文字(グリフ)が含まれていないからです。
プログラムが「日本語フォントが見つからない!」となると、代替の英語フォント(例: DejaVu Sans)で日本語を描画しようと試みます。しかし、その英語フォントは「あ」や「漢」といった文字の形を知らないため、代わりに「□」(豆腐と呼ばれることがあります)を表示してしまうのです。
解決策は、Matplotlibに対して「この日本語フォントを使ってね!」と、PCにインストールされている日本語フォントの存在を教えてあげることです。これからその具体的な手順を見ていきましょう。
2. 【Windows 11編】日本語表示の解決策
Windowsには、標準で多くの日本語フォントがインストールされています。ここでは、一般的に利用可能な「Yu Gothic」(游ゴシック)や「Meiryo」(メイリオ)を使う方法を解説します。
ステップ1:matplotlibrcファイルの場所を特定する
Matplotlibの設定は、matplotlibrc
という設定ファイルで管理されています。このファイルを編集することで、Matplotlibのデフォルトの挙動を変更できます。まずは、このファイルがどこにあるかを探しましょう。以下のPythonコードを実行してください。
import matplotlib
print(matplotlib.matplotlib_fname())
実行結果 (例):
C:\Users\YourName\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\mpl-data\matplotlibrc
この表示されたパスが、あなたが編集すべき設定ファイルの場所です。
ステップ2:matplotlibrcファイルを編集する
- 先ほど特定したパスをエクスプローラーで開き、
matplotlibrc
ファイルを見つけます。(もしファイルが表示されない場合は、隠しファイルを表示する設定にしてみてください。) - このファイルをメモ帳やVS Codeなどのテキストエディタで開きます。
- ファイルの中から、以下の3つの行を探します。行頭に
#
が付いている場合は、コメントアウトされているので、#
を削除して有効化し、値を変更します。
変更前の状態 (例):
#font.family: sans-serif
... (中略) ...
#font.sans-serif: DejaVu Sans, Bitstream Vera Sans, ...
... (中略) ...
#axes.unicode_minus: True
変更後の状態:
font.family: sans-serif
... (中略) ...
font.sans-serif: Yu Gothic, DejaVu Sans, Bitstream Vera Sans, ... # ★ 先頭に 'Yu Gothic' や 'Meiriyo' を追加
... (中略) ...
axes.unicode_minus: False # ★ TrueからFalseに変更
font.sans-serif
: このリストの先頭に、使いたい日本語フォント名(例:Yu Gothic
,Meiriyo UI
,MS Gothic
など)を追加します。これにより、Matplotlibは優先的にそのフォントを使いにいきます。axes.unicode_minus
: これをFalse
にしないと、グラフのマイナス記号-
が文字化けしてしまうことがあるため、忘れずに変更しましょう。
編集が終わったら、ファイルを上書き保存します。
ステップ3:キャッシュファイルを削除する (超重要!)
Matplotlibは、フォント情報を高速に読み込むためにキャッシュファイルを作成します。設定ファイルを変更しただけでは、この古いキャッシュが参照されてしまい、変更が反映されません。**このステップが最も忘れやすく、ハマりやすいポイントです。**
以下のPythonコードを実行して、キャッシュファイルの場所を特定し、その中にあるファイルを全て手動で削除してください。
import matplotlib
print(matplotlib.get_cachedir())
実行結果 (例):
C:\Users\YourName\.matplotlib
エクスプローラーでこのフォルダを開き、中にあるファイル(fontlist-v330.json
のような名前のファイル)を全て削除します。(フォルダ自体を削除しても、次回実行時に自動で再生成されます。)
ステップ4:動作確認
全てのステップが終わったら、VS CodeやJupyter Notebookなどを一度完全に再起動してから、以下の確認用コードを実行してみてください。
import matplotlib.pyplot as plt
import numpy as np
plt.plot(np.random.randn(50).cumsum())
plt.title('日本語タイトルのテスト')
plt.xlabel('X軸ラベル')
plt.ylabel('Y軸ラベル(マイナス値も表示 -1)')
plt.grid(True)
plt.show()
グラフのタイトルやラベルが日本語で正しく表示されれば、設定完了です!
3. 【Linux Ubuntu編】日本語表示の解決策
Ubuntuの場合、最小構成でインストールすると日本語フォントが入っていないことがあるため、まずフォントをインストールするステップから始めます。
ステップ1:日本語フォントをインストールする
ターミナルを開き、以下のコマンドで代表的な日本語フォント(IPAフォントやNotoフォント)をインストールします。
sudo apt update
sudo apt install -y fonts-ipafont fonts-noto-cjk
ステップ2:matplotlibrcファイルの場所を特定し、編集する
手順はWindowsの場合と全く同じです。
- Pythonで
matplotlib.matplotlib_fname()
を実行して、matplotlibrc
ファイルの場所を特定します。 sudo nano /path/to/your/matplotlibrc
のようにして、テキストエディタでファイルを開きます。- 以下の3つの行を探し、
#
を削除して有効化し、値を変更します。
インストールしたフォント名(例:font.family: sans-serif font.sans-serif: IPAexGothic, DejaVu Sans, ... # ★ 先頭に 'IPAexGothic' などを追加 axes.unicode_minus: False
IPAexGothic
,Noto Sans CJK JP
)を指定してください。 - ファイルを上書き保存します。
ステップ3:キャッシュファイルを削除する (こちらも超重要!)
Ubuntuでもキャッシュの削除は必須です。Pythonでmatplotlib.get_cachedir()
を実行してキャッシュの場所(例: /home/your_user/.cache/matplotlib
)を特定し、ターミナルでそのフォルダの中身を削除します。
# まずキャッシュの場所を確認
python3 -c "import matplotlib; print(matplotlib.get_cachedir())"
# 表示されたパスを使ってキャッシュを削除 (パスは適宜置き換える)
rm -rf /home/your_user/.cache/matplotlib/*
ステップ4:動作確認
Windowsと同様に、Python環境を再起動してから確認用コードを実行し、日本語が正しく表示されるか確認してください。
まとめ:一度の設定で、快適な日本語グラフ環境を!
今回は、Matplotlibで日本語が文字化けする問題の原因と、その恒久的な対策について、WindowsとUbuntuのそれぞれで解説しました。
解決のポイントは3つでしたね。
matplotlibrc
ファイルを見つける。font.sans-serif
に使いたい日本語フォント名を追加し、axes.unicode_minus
をFalse
にする。- 古いキャッシュファイル(
~/.matplotlib
内)を忘れずに削除する。
この一度きりの設定で、これからのあなたのMatplotlibライフは、文字化けのストレスから解放されるはずです。ぜひ、綺麗なグラフで、あなたのデータ分析の結果を分かりやすく表現してくださいね!
コメント
コメントを投稿