Step 37:日本語フォントの設定

🔤 ステップ37: 日本語フォントの設定

グラフで日本語を正しく表示しよう!

ステップ35、36でグラフにタイトルや軸ラベルを追加しました。しかし、日本語が文字化けして「□□□」や「???」と表示されることがあります。今回は日本語を正しく表示する方法を学びます。

📖 このステップで学ぶこと

・日本語が表示されない原因

・Google Colabでの日本語フォント設定

・マイナス記号の文字化け対策

・設定を関数にまとめる方法

🎯 1. 日本語が表示されない問題

Matplotlibで日本語を使うと、文字化けすることがあります。これはMatplotlibがデフォルトで日本語フォントを持っていないためです。

🔰 文字化けの例

コード:日本語が文字化けする例

import matplotlib.pyplot as plt

months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]

plt.plot(months, sales)
plt.title('月別売上推移')  # ← 文字化けする
plt.xlabel('月')           # ← 文字化けする
plt.ylabel('売上(万円)')  # ← 文字化けする
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

🚨 文字化けの症状

・タイトルが「□□□□□」と表示される

・軸ラベルが「???」になる

・凡例の日本語が読めない

💡 なぜ文字化けするのか?

Matplotlibは英語圏で開発されたライブラリです。

デフォルトのフォントは日本語の文字を含んでいません

そのため、日本語を表示しようとすると「表示できない」という意味で□や?が表示されます。

解決方法:日本語フォントをインストールして、Matplotlibに使うよう設定します。

🔧 2. Google Colabでの設定方法

Google Colabを使っている場合、以下のコードを実行するだけで日本語が使えるようになります。

🔰 一番簡単な方法

コード:日本語フォントの設定(基本)

# ステップ1:日本語フォントをインストール
!apt-get -y install fonts-ipafont-gothic

# ステップ2:Matplotlibの設定
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')

※ 画面が小さい場合は、コードブロックを横にスクロールできます

💡 コードの解説(1行ずつ)

!apt-get -y install fonts-ipafont-gothic

 ・!:Google Colabでシステムコマンドを実行する記号

 ・apt-get install:ソフトウェアをインストールするコマンド

 ・-y:確認なしで自動的にインストール

 ・fonts-ipafont-gothic:日本語フォント「IPAゴシック」

import matplotlib

 ・Matplotlibライブラリをインポート

matplotlib.rc(‘font’, family=’IPAGothic’)

 ・matplotlib.rc():Matplotlibの設定を変更する関数

 ・‘font’:フォントの設定を変更

 ・family=’IPAGothic’:使用するフォントを指定

📌 実行のポイント

・このコードはノートブックの最初で1回だけ実行します

・実行後は、すべてのグラフで日本語が使えます

新しいノートブックを開くたびに実行が必要です

・ランタイムを再起動した場合も再実行が必要です

📝 実際に使ってみよう

コード:日本語でグラフを作成

# 日本語フォントをインストール(最初に1回だけ)
!apt-get -y install fonts-ipafont-gothic

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')

# 日本語でグラフを作成
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]

plt.plot(months, sales, marker='o')
plt.title('月別売上推移')
plt.xlabel('月')
plt.ylabel('売上(万円)')
plt.grid(linestyle='--', alpha=0.3)
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

実行結果

日本語が正しく表示されたグラフが作成されます:

・タイトル「月別売上推移」が読める

・X軸ラベル「月」が読める

・Y軸ラベル「売上(万円)」が読める

⚙️ 3. より確実な設定方法

基本の設定で日本語が表示されない場合は、フォントキャッシュをクリアする必要があります。

📝 フォントキャッシュのクリア

コード:完全な設定手順

# ステップ1:日本語フォントをインストール
!apt-get -y install fonts-ipafont-gothic

# ステップ2:必要なモジュールをインポート
import matplotlib.pyplot as plt
import matplotlib
import matplotlib.font_manager as fm

# ステップ3:フォントキャッシュをクリア
fm._rebuild()

# ステップ4:日本語フォントを設定
matplotlib.rc('font', family='IPAGothic')

print("日本語フォントの設定が完了しました!")

※ 画面が小さい場合は、コードブロックを横にスクロールできます

💡 新しいコードの解説

import matplotlib.font_manager as fm

 ・フォント管理のモジュールをインポート

 ・fmという短い名前で使えるようにする

fm._rebuild()

 ・フォントキャッシュをクリアして再構築

 ・新しくインストールしたフォントを認識させる

 ・これを実行しないと、フォントが見つからないことがある

実行結果

日本語フォントの設定が完了しました!

📝 マイナス記号の文字化け対策

日本語フォントを設定すると、マイナス記号(-)が文字化けすることがあります。これも合わせて設定しましょう。

コード:マイナス記号対策を追加

# 日本語フォントをインストール
!apt-get -y install fonts-ipafont-gothic

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')

# マイナス記号の文字化け対策
matplotlib.rcParams['axes.unicode_minus'] = False

print("設定完了!日本語もマイナス記号も正しく表示されます")

※ 画面が小さい場合は、コードブロックを横にスクロールできます

💡 コードの解説

matplotlib.rcParams[‘axes.unicode_minus’] = False

 ・rcParams:Matplotlibの設定を格納している辞書

 ・‘axes.unicode_minus’:マイナス記号の表示設定

 ・False:Unicodeのマイナス記号を使わない(通常のハイフンを使う)

なぜ必要?

 ・日本語フォントにはUnicodeのマイナス記号が含まれていないことがある

 ・Falseにすると、通常のハイフン(-)で代用される

📝 マイナス記号のテスト

コード:マイナス値を含むグラフ

# 日本語フォント設定
!apt-get -y install fonts-ipafont-gothic
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')
matplotlib.rcParams['axes.unicode_minus'] = False

# マイナス値を含むデータ
months = ['12月', '1月', '2月', '3月']
temperature = [-2, -5, -3, 3]

# グラフを描く
plt.plot(months, temperature, marker='o', linewidth=2)
plt.title('冬季の平均気温')
plt.xlabel('月')
plt.ylabel('気温(℃)')

# 0度の線を追加
plt.axhline(y=0, color='red', linestyle='--', alpha=0.5)

plt.grid(linestyle='--', alpha=0.3)
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

💡 新しいコードの解説

plt.axhline(y=0, color=’red’, linestyle=’–‘, alpha=0.5)

 ・axhline:水平線(horizontal line)を描く

 ・y=0:y=0の位置に線を引く

 ・気温のグラフで0度の基準線として便利

実行結果

Y軸に「-5」「-3」「-2」などのマイナス値が正しく表示されます。

📊 4. 実践例:日本語を使ったグラフ

📘 例1:月別売上グラフ

コード:売上とコストの比較

# フォント設定(最初に実行)
!apt-get -y install fonts-ipafont-gothic
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')
matplotlib.rcParams['axes.unicode_minus'] = False

# データの準備
months = ['1月', '2月', '3月', '4月', '5月', '6月']
revenue = [150, 180, 220, 200, 250, 280]
cost = [120, 140, 160, 150, 180, 200]

# グラフ作成
plt.figure(figsize=(10, 6))
plt.plot(months, revenue, marker='o', label='売上', linewidth=2)
plt.plot(months, cost, marker='s', label='コスト', linewidth=2)

plt.title('月別売上とコストの推移', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('金額(万円)', fontsize=12)
plt.legend(fontsize=11)
plt.grid(linestyle='--', alpha=0.3)
plt.tight_layout()
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

実行結果

日本語がきれいに表示された売上グラフが作成されます。

・タイトル「月別売上とコストの推移」

・凡例「売上」「コスト」

・軸ラベル「月」「金額(万円)」

📘 例2:棒グラフ(都道府県別データ)

コード:都道府県別人口

# フォント設定(最初に実行)
!apt-get -y install fonts-ipafont-gothic
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')

# データの準備
prefectures = ['東京', '大阪', '愛知', '福岡', '北海道']
population = [1400, 880, 755, 510, 525]

# 棒グラフを作成
plt.figure(figsize=(10, 6))
plt.bar(prefectures, population, color='skyblue', edgecolor='black')

plt.title('都道府県別人口', fontsize=16)
plt.xlabel('都道府県', fontsize=12)
plt.ylabel('人口(万人)', fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.3)
plt.tight_layout()
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

💡 新しいコードの解説

plt.bar(prefectures, population)

 ・棒グラフを描く関数

 ・第1引数:X軸のカテゴリ(都道府県名)

 ・第2引数:棒の高さ(人口)

color=’skyblue’

 ・棒の色を水色に

edgecolor=’black’

 ・棒の枠線を黒に

plt.grid(axis=’y’)

 ・Y軸方向のみグリッド線を表示

📘 例3:円グラフ(カテゴリ別データ)

コード:支出内訳の円グラフ

# フォント設定(最初に実行)
!apt-get -y install fonts-ipafont-gothic
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')

# データの準備
categories = ['食費', '住居費', '光熱費', '交通費', 'その他']
expenses = [30, 35, 10, 15, 10]

# 円グラフを作成
plt.figure(figsize=(8, 8))
plt.pie(expenses, labels=categories, autopct='%1.1f%%', startangle=90)

plt.title('月々の支出内訳', fontsize=16)
plt.tight_layout()
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

💡 新しいコードの解説

plt.pie(expenses, labels=categories)

 ・円グラフを描く関数

 ・第1引数:各項目の値

 ・labels:各項目のラベル

autopct=’%1.1f%%’

 ・パーセンテージを自動で表示

 ・’%1.1f%%’は「小数点1桁の%表示」

startangle=90

 ・円グラフの開始角度(90度=上から開始)

🔄 5. 設定を関数にまとめる

毎回同じコードを書くのは面倒です。関数にまとめると便利です。

📝 日本語フォント設定の関数

コード:設定関数を作成

def setup_japanese_font():
    """日本語フォントを設定する関数"""
    import subprocess
    import matplotlib
    import matplotlib.font_manager as fm
    
    # フォントをインストール(出力を非表示に)
    subprocess.run(['apt-get', '-y', 'install', 'fonts-ipafont-gothic'], 
                   stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
    
    # フォントキャッシュをクリア
    fm._rebuild()
    
    # 日本語フォントを設定
    matplotlib.rc('font', family='IPAGothic')
    matplotlib.rcParams['axes.unicode_minus'] = False
    
    print("✅ 日本語フォントの設定が完了しました")

# 使い方:最初に1回だけ実行
setup_japanese_font()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

💡 コードの解説

def setup_japanese_font():

 ・setup_japanese_fontという名前の関数を定義

 ・一度定義すれば、何度でも呼び出せる

“””日本語フォントを設定する関数”””

 ・ドキュメント文字列(docstring)

 ・関数の説明を書く

subprocess.run([…])

 ・Pythonからシステムコマンドを実行

 ・stdout=subprocess.DEVNULL:出力を非表示に

print(“✅ …”)

 ・設定完了のメッセージを表示

実行結果

✅ 日本語フォントの設定が完了しました

📝 関数を使ってグラフを作成

コード:関数を使った例

import matplotlib.pyplot as plt

# 日本語フォント設定(最初に1回)
setup_japanese_font()

# グラフを作成
subjects = ['国語', '数学', '英語', '理科', '社会']
scores = [85, 92, 78, 88, 90]

plt.figure(figsize=(10, 6))
plt.bar(subjects, scores, color='lightgreen', edgecolor='black')

plt.title('科目別テスト結果', fontsize=16)
plt.xlabel('科目', fontsize=12)
plt.ylabel('得点', fontsize=12)
plt.ylim(0, 100)
plt.grid(axis='y', linestyle='--', alpha=0.3)
plt.tight_layout()
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

🐛 6. トラブルシューティング

日本語フォントがうまく表示されない場合の対処法です。

🔴 問題1:フォントがインストールできない

🚨 エラー例

E: Unable to locate package fonts-ipafont-gothic

💡 解決方法

パッケージリストを更新してから再実行します:

!apt-get update
!apt-get -y install fonts-ipafont-gothic

※ 画面が小さい場合は、コードブロックを横にスクロールできます

🔴 問題2:設定したのに日本語が表示されない

🚨 考えられる原因

・フォントキャッシュが古い

・設定コードがグラフより後に実行されている

・ランタイムの問題

💡 解決方法

1. fm._rebuild()を実行してフォントキャッシュをクリア

2. セルを上から順番に実行し直す

3. 「ランタイム」→「ランタイムを再起動」を選択して再実行

🔴 問題3:マイナス記号が表示されない

💡 解決方法

以下のコードを追加してください:

matplotlib.rcParams['axes.unicode_minus'] = False

※ 画面が小さい場合は、コードブロックを横にスクロールできます

📝 確認用のテストコード

日本語フォントが正しく設定されているか確認するコードです。

コード:設定確認テスト

# 日本語フォントが正しく設定されているか確認
import matplotlib.pyplot as plt

# テスト1:日本語テスト
test_data = [1, 2, 3, 4, 5]
plt.plot(test_data)
plt.title('日本語テスト:これが読めればOK!')
plt.xlabel('横軸ラベル')
plt.ylabel('縦軸ラベル')
plt.show()

# テスト2:マイナス記号テスト
negative_data = [-5, -3, -1, 1, 3, 5]
plt.plot(negative_data, marker='o')
plt.title('マイナス記号テスト')
plt.axhline(y=0, color='red', linestyle='--')
plt.grid(True, alpha=0.3)
plt.show()

print("両方のグラフで日本語とマイナス記号が読めればOKです!")

※ 画面が小さい場合は、コードブロックを横にスクロールできます

📝 練習問題

問題1:日本語フォント設定(初級)

📋 問題

Google Colabで日本語フォントを設定し、「こんにちは、Python!」というタイトルのグラフを作成してください。

解答例を見る

コード

# 日本語フォント設定
!apt-get -y install fonts-ipafont-gothic
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')

# グラフ作成
data = [1, 3, 2, 5, 4]
plt.plot(data)
plt.title('こんにちは、Python!')
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

問題2:曜日別データのグラフ(初級)

📋 問題

曜日を日本語で表示した売上グラフを作成してください。

days = ['月曜', '火曜', '水曜', '木曜', '金曜']
sales = [120, 150, 130, 180, 200]

※ 画面が小さい場合は、コードブロックを横にスクロールできます

解答例を見る

コード

# 日本語フォント設定
!apt-get -y install fonts-ipafont-gothic
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')

# データ
days = ['月曜', '火曜', '水曜', '木曜', '金曜']
sales = [120, 150, 130, 180, 200]

# グラフ作成
plt.plot(days, sales, marker='o')
plt.title('曜日別売上')
plt.xlabel('曜日')
plt.ylabel('売上(万円)')
plt.grid(linestyle='--', alpha=0.3)
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

問題3:マイナス値を含むグラフ(中級)

📋 問題

マイナスの値を含む気温データのグラフを作成してください。マイナス記号が正しく表示されるように設定してください。

months = ['12月', '1月', '2月', '3月']
temperature = [-2, -5, -3, 3]

※ 画面が小さい場合は、コードブロックを横にスクロールできます

解答例を見る

コード

# 日本語フォント設定(マイナス記号対応)
!apt-get -y install fonts-ipafont-gothic
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')
matplotlib.rcParams['axes.unicode_minus'] = False

# データ
months = ['12月', '1月', '2月', '3月']
temperature = [-2, -5, -3, 3]

# グラフ作成
plt.plot(months, temperature, marker='o', linewidth=2)
plt.title('冬季の平均気温')
plt.xlabel('月')
plt.ylabel('気温(℃)')
plt.axhline(y=0, color='red', linestyle='--', alpha=0.5)
plt.grid(linestyle='--', alpha=0.3)
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

問題4:複数データの比較グラフ(中級)

📋 問題

3つの店舗の売上を比較するグラフを作成し、日本語の凡例を表示してください。

months = ['4月', '5月', '6月']
tokyo = [200, 220, 250]
osaka = [180, 210, 230]
nagoya = [150, 170, 200]

※ 画面が小さい場合は、コードブロックを横にスクロールできます

解答例を見る

コード

# 日本語フォント設定
!apt-get -y install fonts-ipafont-gothic
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc('font', family='IPAGothic')

# データ
months = ['4月', '5月', '6月']
tokyo = [200, 220, 250]
osaka = [180, 210, 230]
nagoya = [150, 170, 200]

# グラフ作成
plt.figure(figsize=(10, 6))
plt.plot(months, tokyo, marker='o', label='東京店', linewidth=2)
plt.plot(months, osaka, marker='s', label='大阪店', linewidth=2)
plt.plot(months, nagoya, marker='^', label='名古屋店', linewidth=2)

plt.title('店舗別売上比較', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.legend(fontsize=11)
plt.grid(linestyle='--', alpha=0.3)
plt.tight_layout()
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

問題5:設定関数を作成(上級)

📋 問題

日本語フォント設定を自動で行う関数を作成し、それを使って折れ線グラフ、棒グラフ、円グラフの3つを作成してください。

解答例を見る

コード

def setup_japanese_font():
    """日本語フォントを設定する関数"""
    import subprocess
    import matplotlib
    import matplotlib.font_manager as fm
    
    subprocess.run(['apt-get', '-y', 'install', 'fonts-ipafont-gothic'], 
                   stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
    fm._rebuild()
    matplotlib.rc('font', family='IPAGothic')
    matplotlib.rcParams['axes.unicode_minus'] = False
    print("✅ 日本語フォント設定完了")

import matplotlib.pyplot as plt

# フォント設定
setup_japanese_font()

# 1. 折れ線グラフ
months = ['1月', '2月', '3月']
sales = [100, 120, 150]
plt.figure(figsize=(8, 5))
plt.plot(months, sales, marker='o')
plt.title('売上推移')
plt.xlabel('月')
plt.ylabel('売上(万円)')
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

# 2. 棒グラフ
products = ['商品A', '商品B', '商品C']
quantities = [50, 80, 65]
plt.figure(figsize=(8, 5))
plt.bar(products, quantities, color='skyblue')
plt.title('商品別販売数')
plt.xlabel('商品')
plt.ylabel('販売数')
plt.tight_layout()
plt.show()

# 3. 円グラフ
categories = ['食品', '衣類', '雑貨']
ratios = [40, 35, 25]
plt.figure(figsize=(8, 8))
plt.pie(ratios, labels=categories, autopct='%1.1f%%')
plt.title('カテゴリ別売上比率')
plt.tight_layout()
plt.show()

※ 画面が小さい場合は、コードブロックを横にスクロールできます

🎯 このステップのまとめ

✅ 学んだこと

✓ Matplotlibで日本語を表示するにはフォント設定が必要

!apt-get -y install fonts-ipafont-gothicでフォントをインストール

matplotlib.rc(‘font’, family=’IPAGothic’)で設定

✓ マイナス記号の文字化けにはrcParams[‘axes.unicode_minus’] = False

✓ 設定を関数にまとめると便利

新しいノートブックでは毎回設定が必要

💡 次のステップに進む前に確認

以下のことができるようになったか確認しましょう:

□ 日本語フォントをインストールできる

□ 日本語が正しく表示されるグラフを作れる

□ マイナス記号の設定ができる

□ フォント設定を関数化できる

これらができたら、次のステップに進みましょう!

❓ よくある質問

Q1: ノートブックを開くたびに設定が必要ですか?

A: はい、新しいノートブックやランタイムを再起動すると設定はリセットされます。毎回、最初のセルで日本語フォント設定を実行してください。

Q2: IPAGothic以外のフォントは使えますか?

A: はい、他の日本語フォント(例:fonts-noto-cjk)も使えます。ただし、IPAGothicが最も簡単で安定しています。

Q3: ローカル環境(自分のPC)ではどうすればいいですか?

A: Windows/Mac/Linuxそれぞれで設定方法が異なります。Google Colabを使うのが最も簡単です。ローカル環境では、システムにインストールされている日本語フォント(例:「游ゴシック」「MS Gothic」など)を指定します。

Q4: フォント設定後もまだ文字化けします

A: 以下を試してください:

1. fm._rebuild()でフォントキャッシュをクリア

2. ランタイムを再起動

3. セルを上から順番に実行し直す

Q5: エラーメッセージがたくさん出ますが大丈夫ですか?

A: !apt-getコマンドは多くの情報を出力しますが、最後に完了と表示されていればOKです。エラーでない限り問題ありません。

📝

学習メモ

Pythonデータ分析入門 - Step 37

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE