🎨 ステップ36: グラフを見やすく装飾しよう
タイトル、ラベル、色でグラフをもっとわかりやすく!
ステップ35で折れ線グラフの基本を学びました。今回はタイトル、軸ラベル、凡例、色などを追加して、グラフをもっと見やすくする方法を学びます。
📖 このステップで学ぶこと
・タイトルの追加(plt.title)
・軸ラベルの設定(plt.xlabel、plt.ylabel)
・凡例の表示(plt.legend)
・色とスタイルの変更
🎯 1. なぜグラフの装飾が大切なのか?
前のステップで描いたグラフにはタイトルも軸ラベルもありませんでした。これでは「何のグラフなのか」「縦軸と横軸は何を表しているのか」がわかりません。
📌 良いグラフの条件
タイトル → 何のグラフか一目でわかる
軸ラベル → 縦軸・横軸が何を表しているかわかる
凡例 → 複数の線やデータを区別できる
適切な色 → 見やすく、意味が伝わる
📝 2. タイトルを追加しよう
plt.title()を使うと、グラフにタイトルをつけることができます。
🔰 基本的なタイトルの追加
コード:タイトルを追加
import matplotlib.pyplot as plt
# データの準備
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
# グラフを描く
plt.plot(months, sales)
# タイトルを追加
plt.title('月別売上推移')
# グラフを表示
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 コードの解説
plt.title(‘月別売上推移’)
・グラフの上部にタイトルを表示します
・引数には表示したい文字列を指定します
・plt.plot()の後、plt.show()の前に書きます
実行結果
グラフの上部に「月別売上推移」というタイトルが表示されます。
📝 タイトルのサイズを変更する
タイトルが小さいと感じたら、fontsizeパラメータでサイズを変更できます。
コード:タイトルのサイズを指定
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
plt.plot(months, sales)
# タイトルのサイズを16に指定
plt.title('月別売上推移', fontsize=16)
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 fontsizeの目安
12:標準サイズ(デフォルト)
14〜16:タイトルに適したサイズ
18以上:大きめのタイトル(発表用など)
📝 タイトルの位置を変更する
コード:タイトルを左寄せに
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
plt.plot(months, sales)
# タイトルを左寄せに
plt.title('月別売上推移', fontsize=16, loc='left')
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
📌 locパラメータの値
| 値 | 位置 |
| ‘center’ | 中央(デフォルト) |
| ‘left’ | 左寄せ |
| ‘right’ | 右寄せ |
🏷️ 3. 軸ラベルを設定しよう
X軸(横軸)とY軸(縦軸)にラベルをつけて、何を表しているか明確にしましょう。
🔰 X軸とY軸にラベルをつける
コード:軸ラベルを追加
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
plt.plot(months, sales)
# タイトル
plt.title('月別売上推移', fontsize=16)
# X軸ラベル
plt.xlabel('月')
# Y軸ラベル
plt.ylabel('売上(万円)')
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 コードの解説
plt.xlabel(‘月’)
・X軸(横軸)の下にラベルを表示します
・「この軸は何を表しているか」を示します
plt.ylabel(‘売上(万円)’)
・Y軸(縦軸)の左にラベルを表示します
・単位(万円)も書くとわかりやすい
実行結果
・タイトル「月別売上推移」がグラフ上部に表示
・X軸の下に「月」が表示
・Y軸の左に「売上(万円)」が表示
📝 軸ラベルのサイズも変更できる
コード:軸ラベルのサイズを指定
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
plt.plot(months, sales)
plt.title('月別売上推移', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
📊 4. 凡例を表示しよう
複数のデータを1つのグラフに表示するとき、凡例(はんれい)があると何の線かわかりやすくなります。
🔰 凡例の基本
凡例を表示するには、2つのステップが必要です。
📌 凡例を表示する手順
ステップ1:plt.plot()にlabelパラメータを追加
ステップ2:plt.legend()で凡例を表示
コード:凡例を表示
import matplotlib.pyplot as plt
# データの準備
months = ['1月', '2月', '3月', '4月', '5月']
sales_2023 = [120, 150, 180, 140, 200]
sales_2024 = [140, 170, 190, 160, 220]
# 2本の線を描く(labelを追加)
plt.plot(months, sales_2023, label='2023年')
plt.plot(months, sales_2024, label='2024年')
# タイトルと軸ラベル
plt.title('年別売上比較', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
# 凡例を表示
plt.legend()
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 コードの解説
plt.plot(months, sales_2023, label=’2023年’)
・label=’2023年’で、この線に名前をつけます
・この名前が凡例に表示されます
plt.legend()
・labelで指定した名前を凡例として表示します
・これを書かないと凡例は表示されません
実行結果
2本の線が表示され、右上に凡例(2023年、2024年)が表示されます。
📝 凡例の位置を変更する
凡例がグラフの邪魔になる場合は、位置を変更できます。
コード:凡例を左上に表示
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales_2023 = [120, 150, 180, 140, 200]
sales_2024 = [140, 170, 190, 160, 220]
plt.plot(months, sales_2023, label='2023年')
plt.plot(months, sales_2024, label='2024年')
plt.title('年別売上比較', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
# 凡例を左上に表示
plt.legend(loc='upper left')
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
📌 凡例の位置オプション(loc)
| 値 | 位置 |
| ‘best’ | 自動で最適な位置(デフォルト) |
| ‘upper right’ | 右上 |
| ‘upper left’ | 左上 |
| ‘lower right’ | 右下 |
| ‘lower left’ | 左下 |
| ‘center’ | 中央 |
🎨 5. 色とスタイルを変更しよう
線の色やスタイルを変更して、グラフをもっと見やすくしましょう。
🔰 線の色を変える
コード:赤い線でグラフを描く
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
# 赤い線でグラフを描く
plt.plot(months, sales, color='red')
plt.title('月別売上推移', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 colorパラメータ
color=’red’
・線の色を赤に変更します
・英語の色名で指定します
📌 よく使う色の名前
| 色名 | 色 | 略記法 |
| ‘red’ | 赤 | ‘r’ |
| ‘blue’ | 青 | ‘b’ |
| ‘green’ | 緑 | ‘g’ |
| ‘orange’ | オレンジ | – |
| ‘purple’ | 紫 | – |
| ‘black’ | 黒 | ‘k’ |
| ‘gray’ | グレー | – |
📝 線のスタイルを変える
linestyleパラメータで、実線・破線などを変更できます。
コード:線のスタイルを変更
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales_2023 = [120, 150, 180, 140, 200]
sales_2024 = [140, 170, 190, 160, 220]
# 実線と破線で区別
plt.plot(months, sales_2023, color='blue', linestyle='-', label='2023年')
plt.plot(months, sales_2024, color='red', linestyle='--', label='2024年')
plt.title('年別売上比較', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.legend()
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
📌 線のスタイル(linestyle)
| 値 | スタイル |
| ‘-‘ | 実線(デフォルト)─── |
| ‘–‘ | 破線 ─ ─ ─ |
| ‘:’ | 点線 ・・・・・ |
| ‘-.’ | 一点鎖線 ─・─・ |
📝 線の太さを変える
コード:線を太くする
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
# 線の太さを3に指定
plt.plot(months, sales, color='blue', linewidth=3)
plt.title('月別売上推移', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 linewidthの目安
1:標準の細さ(デフォルト)
2〜3:見やすい太さ(おすすめ)
4以上:かなり太い
⭐ 6. マーカーを追加しよう
markerパラメータで、データポイントにマーク(印)をつけることができます。
🔰 基本的なマーカー
コード:丸いマーカーを追加
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
# 丸いマーカーを追加
plt.plot(months, sales, color='blue', marker='o')
plt.title('月別売上推移', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
📌 よく使うマーカー
| 値 | 形 |
| ‘o’ | 円(●) |
| ‘s’ | 四角(■) |
| ‘^’ | 三角(▲) |
| ‘v’ | 逆三角(▼) |
| ‘*’ | 星(★) |
| ‘+’ | プラス(+) |
| ‘x’ | バツ(×) |
| ‘D’ | ひし形(◆) |
📝 マーカーのサイズと色を変える
コード:マーカーをカスタマイズ
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
# マーカーのサイズと色を変更
plt.plot(months, sales,
color='blue', # 線の色
marker='o', # マーカーの形
markersize=10, # マーカーのサイズ
markerfacecolor='red') # マーカーの塗りつぶし色
plt.title('月別売上推移', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 マーカーのパラメータ
marker:マーカーの形(’o’, ‘s’, ‘^’など)
markersize:マーカーのサイズ(数値)
markerfacecolor:マーカーの塗りつぶし色
markeredgecolor:マーカーの輪郭色
📐 7. グリッド線を追加しよう
plt.grid()を使うと、グラフに格子線を表示できます。値を読み取りやすくなります。
コード:グリッド線を表示
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
plt.plot(months, sales, color='blue', marker='o')
plt.title('月別売上推移', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
# グリッド線を表示
plt.grid()
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
📝 グリッド線のスタイルを変更
コード:薄い破線のグリッド
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [120, 150, 180, 140, 200]
plt.plot(months, sales, color='blue', marker='o')
plt.title('月別売上推移', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
# 破線で透明度0.3のグリッド
plt.grid(linestyle='--', alpha=0.3)
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 グリッド線のパラメータ
linestyle:線のスタイル(’–‘など)
alpha:透明度(0〜1、0が完全透明、1が不透明)
color:線の色
おすすめ設定:alpha=0.3〜0.5で薄いグリッドにすると、データの邪魔になりません。
✨ 8. 完成版:すべてを組み合わせよう
これまで学んだテクニックをすべて使って、見やすいグラフを作りましょう。
コード:完成版グラフ
import matplotlib.pyplot as plt
# データの準備
months = ['1月', '2月', '3月', '4月', '5月', '6月']
sales_2023 = [120, 150, 180, 140, 200, 220]
sales_2024 = [140, 170, 190, 160, 220, 250]
# グラフのサイズを設定
plt.figure(figsize=(10, 6))
# 2本の線を描く
plt.plot(months, sales_2023,
color='blue',
linestyle='-',
marker='o',
markersize=8,
linewidth=2,
label='2023年')
plt.plot(months, sales_2024,
color='red',
linestyle='--',
marker='s',
markersize=8,
linewidth=2,
label='2024年')
# タイトルと軸ラベル
plt.title('月別売上推移の比較', fontsize=18, fontweight='bold')
plt.xlabel('月', fontsize=14)
plt.ylabel('売上(万円)', fontsize=14)
# 凡例を表示
plt.legend(loc='upper left', fontsize=12)
# グリッド線を表示
plt.grid(linestyle='--', alpha=0.3)
# レイアウト調整
plt.tight_layout()
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 新しく使ったパラメータ
fontweight=’bold’:タイトルを太字に
plt.tight_layout():グラフのレイアウトを自動調整(文字が重なるのを防ぐ)
✅ 良いグラフのチェックリスト
✓ タイトルがついている
✓ X軸とY軸にラベルがある
✓ 単位が明記されている
✓ 凡例がある(複数データの場合)
✓ 色が見やすい
✓ グリッド線で値が読み取りやすい
✓ 文字のサイズが適切
📝 練習問題
問題1:基本の装飾(初級)
📋 問題
以下のデータを使って折れ線グラフを作成し、タイトル「1週間の気温変化」、X軸ラベル「曜日」、Y軸ラベル「気温(℃)」を追加してください。
days = ['月', '火', '水', '木', '金', '土', '日']
temp = [18, 20, 22, 19, 21, 23, 24]
※ 画面が小さい場合は、コードブロックを横にスクロールできます
解答例を見る
コード
import matplotlib.pyplot as plt
days = ['月', '火', '水', '木', '金', '土', '日']
temp = [18, 20, 22, 19, 21, 23, 24]
plt.plot(days, temp)
plt.title('1週間の気温変化', fontsize=16)
plt.xlabel('曜日', fontsize=12)
plt.ylabel('気温(℃)', fontsize=12)
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
問題2:色とマーカーの設定(初級)
📋 問題
問題1のグラフに、赤色の線と丸いマーカーを追加してください。
解答例を見る
コード
import matplotlib.pyplot as plt
days = ['月', '火', '水', '木', '金', '土', '日']
temp = [18, 20, 22, 19, 21, 23, 24]
plt.plot(days, temp, color='red', marker='o')
plt.title('1週間の気温変化', fontsize=16)
plt.xlabel('曜日', fontsize=12)
plt.ylabel('気温(℃)', fontsize=12)
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
問題3:凡例付きグラフ(中級)
📋 問題
2つの店舗の売上データを1つのグラフに表示し、凡例を追加してください。A店は青色の実線、B店は緑色の破線にしてください。
months = ['4月', '5月', '6月', '7月', '8月']
store_a = [200, 220, 250, 240, 280]
store_b = [180, 210, 230, 250, 270]
※ 画面が小さい場合は、コードブロックを横にスクロールできます
解答例を見る
コード
import matplotlib.pyplot as plt
months = ['4月', '5月', '6月', '7月', '8月']
store_a = [200, 220, 250, 240, 280]
store_b = [180, 210, 230, 250, 270]
plt.plot(months, store_a, color='blue', linestyle='-', label='A店')
plt.plot(months, store_b, color='green', linestyle='--', label='B店')
plt.title('店舗別売上比較', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.legend()
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
問題4:グリッド付きグラフ(中級)
📋 問題
問題3のグラフに、破線スタイルで透明度0.3のグリッド線を追加してください。
解答例を見る
コード
import matplotlib.pyplot as plt
months = ['4月', '5月', '6月', '7月', '8月']
store_a = [200, 220, 250, 240, 280]
store_b = [180, 210, 230, 250, 270]
plt.plot(months, store_a, color='blue', linestyle='-', label='A店')
plt.plot(months, store_b, color='green', linestyle='--', label='B店')
plt.title('店舗別売上比較', fontsize=16)
plt.xlabel('月', fontsize=12)
plt.ylabel('売上(万円)', fontsize=12)
plt.legend()
plt.grid(linestyle='--', alpha=0.3)
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
問題5:完成版グラフ(上級)
📋 問題
3人の生徒の数学テスト結果を、以下の仕様でグラフにしてください:
・タイトル:「数学テスト結果の推移」(サイズ18、太字)
・X軸ラベル:「テスト回」、Y軸ラベル:「得点」
・3人それぞれ異なる色とマーカー
・凡例を左上に表示
・グリッド線(点線、透明度0.5)
・グラフサイズ:(10, 6)
tests = ['1回目', '2回目', '3回目', '4回目']
student_a = [65, 72, 80, 85]
student_b = [70, 75, 78, 82]
student_c = [60, 68, 75, 88]
※ 画面が小さい場合は、コードブロックを横にスクロールできます
解答例を見る
コード
import matplotlib.pyplot as plt
tests = ['1回目', '2回目', '3回目', '4回目']
student_a = [65, 72, 80, 85]
student_b = [70, 75, 78, 82]
student_c = [60, 68, 75, 88]
# グラフサイズを設定
plt.figure(figsize=(10, 6))
# 3人の生徒のデータを描く
plt.plot(tests, student_a,
color='blue',
marker='o',
markersize=8,
linewidth=2,
label='生徒A')
plt.plot(tests, student_b,
color='green',
marker='s',
markersize=8,
linewidth=2,
label='生徒B')
plt.plot(tests, student_c,
color='red',
marker='^',
markersize=8,
linewidth=2,
label='生徒C')
# タイトルと軸ラベル
plt.title('数学テスト結果の推移', fontsize=18, fontweight='bold')
plt.xlabel('テスト回', fontsize=12)
plt.ylabel('得点', fontsize=12)
# 凡例を左上に
plt.legend(loc='upper left', fontsize=11)
# 点線のグリッド
plt.grid(linestyle=':', alpha=0.5)
plt.tight_layout()
plt.show()
※ 画面が小さい場合は、コードブロックを横にスクロールできます
🎯 このステップのまとめ
✅ 学んだこと
✓ plt.title()でタイトルを追加
✓ plt.xlabel()とplt.ylabel()で軸ラベルを設定
✓ plt.legend()で凡例を表示
✓ colorで線の色を変更
✓ linestyleで線のスタイルを変更
✓ markerでマーカーを追加
✓ plt.grid()でグリッド線を表示
✓ 複数のパラメータを組み合わせて見やすいグラフを作成
💡 次のステップに進む前に確認
以下のことができるようになったか確認しましょう:
□ タイトルと軸ラベルを追加できる
□ 凡例を表示できる
□ 線の色やスタイルを変更できる
□ マーカーを追加できる
□ グリッド線を表示できる
これらができたら、次のステップに進みましょう!
❓ よくある質問
Q1: グラフの文字が重なってしまいます
A: plt.tight_layout()を最後に追加すると自動で調整されます。また、plt.figure(figsize=(10, 6))でグラフサイズを大きくするのも効果的です。
Q2: 色の指定方法は他にもありますか?
A: はい!16進数カラーコード(例:'#FF5733')やRGB値(例:(0.5, 0.2, 0.8))でも指定できます。より細かい色の調整が可能です。
Q3: 凡例が邪魔な位置に表示されます
A: plt.legend(loc='upper left')などで位置を指定できます。’upper left’、’lower right’など様々な位置を試してみてください。
Q4: グリッド線が太すぎて見づらいです
A: alphaパラメータで透明度を調整しましょう。plt.grid(alpha=0.3)のように0.2〜0.5くらいが見やすいです。
Q5: 日本語が文字化けします
A: 次のステップ(ステップ37)で日本語フォントの設定方法を詳しく学びます。
学習メモ
Pythonデータ分析入門 - Step 36